Daily Leetcode 144. Binary Tree Preorder Traversal

Easy 關於 BST preorder、inorder、postorder traversal

2023 Dec LC challenge

相似題目

  1. Binary Tree Inorder Traversal
  2. Binary Tree Postorder Traversal
  3. Binary Tree Preorder Traversal

preorder、postorder、inorder traversal 特性

  • 前序 Preorder : root -> left -> right
  • 後序 Postorder : left -> right -> root
  • 中序 InOrder : right -> left -> right

My Code

94. Binary Tree Inorder Traversal

  • 中序 InOrder : right -> left -> right
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        //root.left - > root -> root.right
        List<Integer> result = new ArrayList<>();
        inorderTraversal(root, result);
        return result;
    }

        private void inorderTraversal(TreeNode node, List<Integer> result) {
        if (node == null) return;

        if (node.left != null) {
            inorderTraversal(node.left, result);
        }

        result.add(node.val);

        if (node.right != null) {
            inorderTraversal(node.right, result);
        }
    }
}

144. Binary Tree Preorder Traversal

  • 前序 Preorder : root -> left -> right
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        
        List<Integer> result = new ArrayList<>();
        preorderTraversal(result, root);
        return result;
    }

    public void preorderTraversal(List<Integer> result, TreeNode node) {
        
        if ( node == null) return;
        
        result.add(node.val);

        if (node.left != null) {
            preorderTraversal(result, node.left);
        }

        if(node.right != null) {
            preorderTraversal(result, node.right);
        }
    } 
}

145. Binary Tree Postorder Traversal

  • 後序 Postorder : left -> right -> root
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        
        List<Integer> result = new ArrayList<>();
        postorderTraversal(result, root);
        return result;
    }

    public void postorderTraversal(List<Integer> result, TreeNode node) {
        if (node == null) return;

        if (node.left != null) {
            postorderTraversal(result, node.left);
        }

        if (node.right != null) {
            postorderTraversal(result, node.right);
        }
        result.add(node.val);
    }
}
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus