94. 二叉树的中序遍历
程序员文章站
2022-03-26 18:26:10
...
题目:
知识提要:
前序遍历的规则是
若节点为空,则空操作返回;
否则先中序遍历左子树
然后先访问根节点,
再中序遍历右子数
代码:
//迭代
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> ans = new ArrayList<Integer>();
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode node = root;
while(!stack.isEmpty() || node != null){
while(node != null){
stack.push(node);
node = node.left;
}
node = stack.pop();
ans.add(node.val);
node = node.right;
}
return ans;
}
}
//递归
class Solution1 {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> ans = new ArrayList<Integer>();
inorder(root,ans);
return ans;
}
public void inorder(TreeNode node,List list){
if(node == null)
return;
inorder(node.left,list);
list.add(node.val);
inorder(node.right,list);
}
}
思路:
思路和前序遍历一样,只是左子树遍历完再遍历根节点,代码顺序不一样而已,前序遍历链接:前序遍历
复杂度分析:
时间复杂度:O(n)
空间复杂度:O(n)
下一篇: 背景填充