概念
- Leetcode定义
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;
}
}
-
遍历
先序遍历:头左右
中序遍历:左头右
后序遍历:左右头 -
递归序 每次到达节点就打印一次 进行加工即可得到三序的遍历
如下图二叉树 递归序为
1,3,5,null,5,null,5,3,null,3,1,2,null,2,null,2,1
即 1,3,5,5,5,3,1,2,2,2,1
取第一次 1,3,5,2 先序
取第二次 5,3,1,2 中序
取第三次 5,3,2,1 后序
遍历实现
//先序遍历
public static void pre(TreeNode head){
if(head.val==null){
return;
}
System.out.println(head.val);
pre(head.left);
pre(head.right);
}
//中序遍历
public static void in(TreeNode head){
if(head.val==null){
return;
}
in(head.left);
System.out.println(head.val);
in(head.right);
}
//后序遍历
public static void after(TreeNode head){
if(head.val==null){
return;
}
after(head.left);
after(head.right);
System.out.println(head.val);
}