package Stack;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class InorderTraversal_94 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
// 递归法
public List<Integer> inorderTraversal01(TreeNode root) {
List<Integer> list=new ArrayList<>();
Recur(root,list);
return list;
}
void Recur(TreeNode root,List<Integer> list) {
if(root!=null) {
Recur(root.left,list);
list.add(root.val);
Recur(root.right,list);
}
}
// 迭代法
// 思路:先遍历左子树,同时将左子树的根节点入栈,访问完左子树后,再将根节点出栈,然后访问右子树
public List<Integer> inorderTraversal02(TreeNode root) {
List<Integer> list=new ArrayList<>();
Stack<TreeNode> stack=new Stack<>();
while(root!=null||!stack.isEmpty()) {
while(root!=null) {
stack.push(root);
root=root.left;
}
root=stack.pop();
list.add(root.val);
root=root.right;
}
return list;
}
}
94. 二叉树的中序遍历
最新推荐文章于 2024-08-24 12:44:53 发布