[刷题记录Day14]Leetcode二叉树

番茄随想 / 2023-08-26 / 原文

No.1

题目

前序遍历

思路

  • 递归法

代码

public void Traverse(TreeNode node, List<Integer> list) {  
    if (node == null)  
        return;  
    list.add(node.val); // 中  
    Traverse(node.left, list); // 左  
    Traverse(node.right, list); // 右  
}  
  
public List<Integer> preorderTraversal(TreeNode root) {  
    List<Integer> result = new ArrayList<>();  
    Traverse(root, result);  
  
    return result;  
}

No.2

题目

中序遍历

思路

  • 递归法

代码

public void Traverse(TreeNode node, List<Integer> list) {  
    if (node == null)  
        return;  
    Traverse(node.left, list); // 左  
    list.add(node.val); // 中  
    Traverse(node.right, list); // 右  
}  
  
public List<Integer> inorderTraversal(TreeNode root) {  
    List<Integer> result = new ArrayList<>();  
    Traverse(root, result);  
  
    return result;  
}

No.3

题目

后序遍历

思路

  • 递归法

代码

public void Traverse(TreeNode node, List<Integer> list) {  
    if (node == null)  
        return;  
    Traverse(node.left, list); // 左  
    Traverse(node.right, list); // 右  
    list.add(node.val); // 中  
}  
  
public List<Integer> postorderTraversal(TreeNode root) {  
    List<Integer> result = new ArrayList<>();  
    Traverse(root, result);  
  
    return result;  
}

No.4

题目

思路

代码

No.5

题目

思路

代码

No.6

题目

思路

代码

No.7

题目

思路

代码

No.8

题目

思路

代码

No.9

题目

思路

代码