博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode145—二叉树的后序遍历(java版)
阅读量:679 次
发布时间:2019-03-17

本文共 1950 字,大约阅读时间需要 6 分钟。

题目描述:

标签:栈  树 

给定一个二叉树,返回它的 后序 遍历。

 代码:

思路分析:后序遍历是左子树-右子树-根。思路同

《方法一:递归》 

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode() {} *     TreeNode(int val) { this.val = val; } *     TreeNode(int val, TreeNode left, TreeNode right) { *         this.val = val; *         this.left = left; *         this.right = right; *     } * } */class Solution {    public List
postorderTraversal(TreeNode root) { List
list = new ArrayList
(); postorder(root,list); return list; } public void postorder(TreeNode root,List
res){ if(root == null){ return; } postorder(root.left,res); postorder(root.right,res); res.add(root.val); }}

《方法二:迭代》

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode() {} *     TreeNode(int val) { this.val = val; } *     TreeNode(int val, TreeNode left, TreeNode right) { *         this.val = val; *         this.left = left; *         this.right = right; *     } * } */class Solution {    public List
postorderTraversal(TreeNode root) { List
list = new ArrayList
(); if(root == null){ return list; } Deque
stack = new LinkedList
(); TreeNode prev = null; while(root != null || !stack.isEmpty()){ while(root != null){ stack.push(root); root = root.left; } root = stack.pop(); if(root.right == null || root.right == prev){ list.add(root.val); prev = root; root = null; }else{ stack.push(root); root = root.right; } } return list; }}

 

 

转载地址:http://ppdhz.baihongyu.com/

你可能感兴趣的文章