下面xin麒来分享一下二叉树的前中后序遍历递归实现:
前序:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode() {
}
public TreeNode(int val) {
this.val = val;
}
public TreeNode(int val,TreeNode left,TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
LinkedList<Integer> tree;
public List<Integer> preorderTraversal(TreeNode root) {
tree = new LinkedList<>();
pre(root);
return tree;
}
private void pre(TreeNode root){
if(root == null){return;}
//xin麒提醒:关键都是以下的三个代码的放置顺序
tree.add(root.val);
pre(root.left);
pre(root.right);
}
}
中序:
class TreeNode{
int val;
TreeNode left;
TreeNode right;
public TreeNode(){}
public TreeNode(int val){this.val = val;}
public TreeNode(int val,TreeNode left,TreeNode right){
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
LinkedList<Integer> list;
public List<Integer> inorderTraversal(TreeNode root) {
list = new LinkedList<>();
inorder(root);
return list;
}
private void inorder(TreeNode root){
if (root == null){return;}
inorder(root.left);
list.add(root.val);
inorder(root.right);
}
}
后序:
class TreeNode{
int val;
TreeNode left;
TreeNode right;
public TreeNode(){}
public TreeNode(int val){this.val = val;}
public TreeNode(int val,TreeNode left,TreeNode righht){
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
LinkedList<Integer> list;
public List<Integer> postorderTraversal(TreeNode root) {
list = new LinkedList<>();
postoder(root);
return list;
}
private void postoder(TreeNode root){
if(root == null){return;}
postoder(root.left);
postoder(root.right);
list.add(root.val);
}
}