class Solution {
//递归实现
ArrayList<Integer> list = new ArrayList<Integer>();
public ArrayList<Integer> midorderTraversal(TreeNode root) {
if(root != null){
midorderTraversal(root.left);
list.add(root.val);
midorderTraversal(root.right);
}
return list;
}
//循环实现
public ArrayList<Integer> midorderTraversal2(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode cur = root, visit = null;
while(cur != null || !stack.isEmpty()){
//循环遍历左孩子
if(cur != null){
stack.push(cur);
cur = cur.left;
}else{
cur = stack.peek();
if(cur.right == null || cur.right == visit){
visit = stack.pop();;
cur = null;
}else{
list.add(cur.val);
cur = cur.right;
}
}
}
return list;
}
}
二叉树的中序遍历
最新推荐文章于 2022-07-15 16:20:17 发布