Tree Traversal
tree traversal 分為 preorder, in-order, postorder
三種方法用遞迴來做瞬間秒殺,不過如果要是非遞迴版本就要很注意丟進 stack 的順序
先上遞迴版本的 code,非遞迴的個別開章節
//preorder: root, left, right
public void preorderTraversalRecursion(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
preorderTraversalRecursion(root.left);
preorderTraversalRecursion(root.right);
return;
}
//inorder: left, root, right
public void inorderTraversalRecursion(TreeNode root) {
if (root == null) {
return;
}
inorderTraversalRecursion(root.left);
System.out.print(root.val + " ");
inorderTraversalRecursion(root.right);
return;
}
//postorder: left, right, root
public void preorderTraversalRecursion(TreeNode root) {
if (root == null) {
return;
}
preorderTraversalRecursion(root.left);
preorderTraversalRecursion(root.right);
System.out.print(root.val + " ");
return;
}