今天刷了一道算法题, 814 二叉树剪枝
题解用的后序遍历
回顾一下 二叉树的前中后遍历 递归😜
二叉树的java实现
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.right = right;
this.left = left
}
}
1.前序遍历 (根左右)
List<Integer> ans = new ArrayList<>();
public List<Integer> traverse(TreeNode root){
if (root == null) return null;
ans.add(root.val);
root.left = traverse(root.left);
root.right = traverse(root.right);
return ans;
}
2.中序遍历 (左根右)
List<Integer> ans = new ArrayList<>();
public List<Integer> traverse(TreeNode root){
if (root == null) return null;
root.left = traverse(root.left);
ans.add(root.val);
root.right = traverse(root.right);
return ans;
}
3.后序遍历 (左右根)
List<Integer> ans = new ArrayList<>();
public List<Integer> traverse(TreeNode root){
if (root == null) return null;
root.left = traverse(root.left);
root.right = traverse(root.right);
ans.add(root.val);
return ans;
}