二叉树层次遍历
已知头结点head,进行层次遍历,需要一个last节点和nlast节点。难点是知道何时换行。
last节点:表示正在打印的当前行的最右节点
nlast节点:表示下一行的最右节点
last==nlast时就换行
我们需要一个队列queue来存储节点
压入头结点1,last=1,nlast=1;
弹出1,2进站,nlast=2
nlast=2,在压入3,last=3,nlast=3;
此时last等于弹出的1,所以换行,last=nlast;
弹出2,压入4,nlast=4;
弹出3,压入5,nlast=5;
压入6,nlast=6;
此时last等于弹出的3,所以换行,last=nlast;
弹出4,空空;
弹出5;
压入7,nlast=7;
压入8,nlast=8;
弹出6;
此时last==弹出的6,所以换行,last=nlast;
弹出7;
弹出8;
二叉树的序列化和反序列化
序列化:将二叉树变成字符串存储
反序列化:将字符串重构成二叉树
序列化方法:
1.先序遍历:
不用特殊字符表示节点值结束的话会产生歧义。
2.中序遍历
3.后序遍历
4.层次遍历