二叉树的遍历
·1.Binary Tree Preorder Traversal 使用栈,时间复杂度O(n),空间复杂度O(n) public static void preOrderRec(Node root){ if (root != null) s.push(root); while (!s.isEmpty()) { final TreeNode p = s.pop(); result.add(p.val); if (p.right != null) s.push(p.right); if (p.left != null) s.push(p.left); } 递归先序遍历,时间复杂度O(n),空间复杂度O(n) public static void preOrderRec(Node root){ if(root!=null){ System.out.println(root.value); preOrderRec(root.left); preOrderRec(root.right); } } Morris先序遍历,时间复杂度O(n),空间复杂度O(1) 步骤: 1.如果当前节点的左孩子为空,则输出当前节点并将其右孩子作为当前节点。 2.如果当前节点的左孩子不为空,在当前节点的左子树中找到当前节点在中序遍历下的前驱节点。 a) 如果前驱节点的右孩子为空