1、二叉树前序遍历 递归与迭代方式。
根左右,遍历把根push进stack,然后push 右子树,左子树。由于根在(根左右)前面,每次子遍历根都在前面,压进去就出来了,可忽略根的属性。由于栈的特性。左右子树压进去的顺序相反。可参考 图 。
背诵:push(root) while栈不空 弹出 压右左
public static void preOrderRecur(TreeNode head) {
if (head == null) {
return;
}
System.out.print(head.value + " ");//res.add(head.val)
preOrderRecur(head.left);
preOrderRecur(head.right);
}
------------------------------------------------------------
public void preorderTraversal(TreeNode p) {
if (p == null) return;
Deque<TreeNode> stack = new ArrayDeque<>();
stack.push(p);
while (!stack.isEmpty()) {
TreeNode tmp = stack.poll();
Syst