算法复习 -- 二叉树遍历
遍历二叉树的关键词
访问和顺序
前序遍历
//前序遍历 访问根节点 前序遍历左子树 再前序遍历右子树 public void beforeOrder(Node root){ Node current = root; if(current!=null){ System.out.println(current.value); inOrder(current.leftNode); inOrder(current.rightNode); } }
中序遍历
//中序遍历 public void inOrder(Node root){ /*根节点作为参数,初始化时这个节点是根。 1 调用自身来遍历节点的左子树 2 访问这个节点 3 调用自身来遍历节点的右子树*/ Node current = root; if(current!=null){ inOrder(current.leftNode); System.out.println(current.value); inOrder(current.rightNode); } }
后序遍历
//后序遍历 public void afterOrder(Node root){ Node current = root; if(current!=null){//// 从左到右先叶子后节点的方式便利访问左右子树 最后访问根节点 inOrder(current.leftNode); inOrder(current.rightNode); System.out.println(current.value); } }
小练习
已知一颗二叉树 求 后序遍历结果是什么?
前序遍历结果:ABCDEF
==> A是根节点
中序遍历序列:CBAEDF
==> CB是左子树 EDF是右子树
如下
我们再看前序中的C和B,
懒得写了 见 P185 <<大话数据结构>>