1.二分木プレオーダートラバーサル再帰的および反復法。
ルートの周りをトラバースしてルートをスタックにプッシュしてから、右側のサブツリーと左側のサブツリーをプッシュします。根が前(根の左右)にあるので、子が根を横切るたびに、根が前にあり、押し込むと出てきて、根の性質は無視できます。スタックの特性による。左右のサブツリーが押される順序が逆になります。写真を参照してください 。
暗唱:スタックが空でないときにpush(root)し、ポップアップし、左右を押します
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