子树是如果想要取那么就必须取全部,例如:
如果取值就必须取全部,比如,去一个以3为头节点的3与7,那么这个不是子树,因为还有6雅瑶取出来,这样就是以3为头节点6,7为子节点,想要取一个子树就必须将他的头节点下边都取出来
子树遍历也分为三种
1)先序:任何子树的处理顺序都是先从头部开始,在左子树,然后右子树
2)中序:任何子树的处理顺序都是先左子树再头节点然后右子树
3)后序:任何子树的处理顺序都是先左子树再右子树然后头节点
例如上边图片先中后序分别为:1)1245367 2)4251637 3)4526731
具体代码如下:
//先序
public void pre(Node head){
if(head==null){
return;
}
System.out.print(head.value);
pre(head.left);
pre(head.right);
}
//中序
public void pre(Node head){
if(head==null){
return;
}
pre(head.left);
System.out.print(head.value);
pre(head.right);
}
//后序
public void pre(Node head){
if(head==null){
return;
}
pre(head.left);
pre(head.right);
System.out.print(head.value);
}
发现其实先中后续遍历其实就是改变节点的打印顺序
这个打印,如果是先序那么就打印第一次到达的如果是中序那么就打印第二次到达的如果是后序那么就打印后序,什么意思呢?就是比如上边那个二叉树:先去头节点是1然后让去左节点发现是2,然后就去左节点发现是4再去左节点是null返回到4然后再去右节点是null返回到4然后因为递归4要返回到2,然后再去右节点是5再去左节点是null返回到5再去右节点是null返回到5然后再返回到2然后再返回到1然后再去右节点是3再去左节点是6再去左节点是null返回到6再去右节点是null返回到6再返回到3再去右节点是7再去左节点是null返回到7再去右节点是null返回到7再返回到3再返回到1 这就是图片下方的计算方式