二叉树将其分为根(B,base),左子树(L,left),右子树(R,right)表示。则遍历树就是遍历B,L和R的过程,对3个组件进行排列,实际有3*2*1=6种。
DLR,LDR,LRD
RLD,RDL,DRL
其本质类似。
默认情况,将L和R的顺序确定下来,先L后R。则只剩下3种常说的,先根,中根,后根。
递归的思路:递归就是自己调用自己,用同样办法解决子问题。
如先根遍历。对于每一个子树,都要先访问根,在递归访问访问左子树(根(根左右),左,右),递归访问右子树。
preorder(root r)
{
if(r==null)//非法情况,同时也是返回条件
return
else
{
print(r)
preorder(r.left)
preorder(r.right)
}
}
中根和后根就是把上面的print放在中间或后面。
层序遍历是利用队列保存每个节点及其左右孩子的。不再赘述。