public ArrayList<Integer>inorderTraversal(TreeNode root){//存储结果
ArrayList<Integer> result = new ArrayList<>();//判空if(root ==null)return result;
TreeNode temp = root;//使用栈来解决
Stack<TreeNode> stack = new Stack<>();while(!stack.isEmpty()|| temp !=null){//先将所有左子树添加到栈中while(temp !=null){
stack.push(temp);
temp = temp.left;}//出栈
temp = stack.pop();
result.add(temp.val);//添加右结点入栈
temp = temp.right;}return result;}
算法(递归)
public ArrayList<Integer>inorderTraversal(TreeNode root){//存储结果
ArrayList<Integer> result = new ArrayList<>();//判空if(root ==null)return result;//递归依次调用,左中右
result.addAll(inorderTraversal(root.left));
result.add(root.val);
result.addAll(inorderTraversal(root.right));return result;}
public ArrayList<ArrayList<Integer>>levelOrder(TreeNode root){if(root ==null)return new ArrayList<>();
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);while(!queue.isEmpty()){
ArrayList<Integer> temp = new ArrayList<>();//记录当前queue的大小,这几个值属于同一层
int count = queue.size();for(int i =0; i < count; i++){//得到当前遍历结点
TreeNode treeNode = queue.poll();
temp.add(treeNode.val);//遍历子结点,添加到队列中if(treeNode.left !=null) queue.offer(treeNode.left);if(treeNode.right !=null) queue.offer(treeNode.right);}
result.add(temp);}return result;}}
public ArrayList<Integer>postorderTraversal(TreeNode root){//存储结果
ArrayList<Integer> result = new ArrayList<>();//判空if(root ==null)return result;//依次递归,左、右、根
result.addAll(postorderTraversal(root.left));
result.addAll(postorderTraversal(root.right));
result.add(root.val);return result;}
LeetCode求给定的二叉树的前序遍历。思想输出顺序根>左>右算法(非递归)使用栈来实现 public ArrayList<Integer> preorderTraversal(TreeNode root) { //结果的存储 ArrayList<Integer> result = new ArrayList<>(); if (root == null) return resul