-
简单介绍
二叉树的遍历(Binary Tree Traversal)其实就是访问树中所有的节点各一次,并且在遍历后,将树中的数据转化为线性关系。
简单二叉树.png
- 中序遍历(BAC,Inorder):左子树—>树根—>右子树
- 前序遍历(ABC,Preorder):树根—>左子树—>右子树
- 后序遍历(BCA,Postorder):左子树—>右子树—>树根
(根据树根所在位置命名的,所以只需要知道树根所在的位置就知道是哪种遍历了)
-
中序遍历
二叉树例子.png
中序遍历的顺序为:左子树—>树根—>右子树。就是沿着树的左子树一直往下,直到无法前进后回退到父节点,再往右子树一直往下,如果右子树也走完了就退回上层的左节点,再重复左、中、右的顺序遍历。
上图的中序遍历为:DBEACF
递归算法如下:
public void inOrder(TreeNode node) {
if (node != null) {
inOrder(node.left_node);
System.out.print("[" + node.value + "]");
inOrder(node.left_node);
}
}
-
前序遍历
二叉树例子.png
前序遍历的顺序为:树根—>左子树—>右子树。就是从树的根节点开始处理,根节点处理完往左子树走,直到无法前进再处理右子树。
上图的中序遍历为:ABDECF
递归算法如下:
public void PreOrder(TreeNode node) {
if (node != null) {
System.out.print("[" + node.value + "]");
inOrder(node.left_node);
inOrder(node.left_node);
}
}
-
后序遍历
二叉树例子.png
后序遍历的顺序为:左子树—>右子树—>树根。后序遍历和前序遍历的方法相反,它是把左子树的节点和右子树的节点都处理完了才处理树根的。
上图的中序遍历为:DEBFCA
递归算法如下:
public void inOrder(TreeNode node) {
if (node != null) {
inOrder(node.left_node);
inOrder(node.left_node);
System.out.print("[" + node.value + "]");
}
}
有什么错误请留言指正。
![](https://img.haomeiwen.com/i998625/58340cbe502685d1.png)
网友评论