二叉树:遍历

  • 简单介绍
    二叉树的遍历(Binary Tree Traversal)其实就是访问树中所有的节点各一次,并且在遍历后,将树中的数据转化为线性关系。
    二叉树:遍历_第1张图片
    简单二叉树.png
  1. 中序遍历(BAC,Inorder):左子树—>树根—>右子树
  2. 前序遍历(ABC,Preorder):树根—>左子树—>右子树
  3. 后序遍历(BCA,Postorder):左子树—>右子树—>树根
    (根据树根所在位置命名的,所以只需要知道树根所在的位置就知道是哪种遍历了)
  • 中序遍历
    二叉树:遍历_第2张图片
    二叉树例子.png

    中序遍历的顺序为:左子树—>树根—>右子树。就是沿着树的左子树一直往下,直到无法前进后回退到父节点,再往右子树一直往下,如果右子树也走完了就退回上层的左节点,再重复左、中、右的顺序遍历。
    上图的中序遍历为:DBEACF
    递归算法如下:
public void inOrder(TreeNode node) {
    if (node != null) {
        inOrder(node.left_node);
        System.out.print("[" + node.value + "]");
        inOrder(node.left_node);
    }
}
  • 前序遍历
    二叉树:遍历_第3张图片
    二叉树例子.png

    前序遍历的顺序为:树根—>左子树—>右子树。就是从树的根节点开始处理,根节点处理完往左子树走,直到无法前进再处理右子树。
    上图的中序遍历为:ABDECF
    递归算法如下:
public void PreOrder(TreeNode node) {
    if (node != null) {
        System.out.print("[" + node.value + "]");
        inOrder(node.left_node);
        inOrder(node.left_node);
    }
}
  • 后序遍历
    二叉树:遍历_第4张图片
    二叉树例子.png

    后序遍历的顺序为:左子树—>右子树—>树根。后序遍历和前序遍历的方法相反,它是把左子树的节点和右子树的节点都处理完了才处理树根的。
    上图的中序遍历为:DEBFCA
    递归算法如下:
public void inOrder(TreeNode node) {
    if (node != null) {
        inOrder(node.left_node);
        inOrder(node.left_node);
        System.out.print("[" + node.value + "]");
    }
}

有什么错误请留言指正。
thanks.png

你可能感兴趣的:(二叉树:遍历)