zoukankan      html  css  js  c++  java
  • 数据结构学习笔记4.3--遍历树

    遍历树是根据一种特定的顺序访问树的每一个节点。这个过程相对比较慢,所以一般不常用。

    常用的遍历方法有三种,分别是:前序遍历,中序遍历,后序遍历。其中最常用,也最简单的是中序遍历。

    遍历的最简单方法是用敌对调用,这里我们将三种排序方法都使用递归调用。

    image

    1.中序遍历

    二叉树会使所有的节点按关键字值升序被访问到。如果需要创建有序的数据序列,使用中序遍历将会非常简单。

    方法:

    1.调用自身来遍历节点的左子树。

    2.访问这个节点。

    3.调用自身来遍历节点的右子树。

    代码:

        /**
         * 中序遍历
         * @param localRoot 节点值
         */
        private void inOrder(Node localRoot)
        {
            if (localRoot != null)
            {
                inOrder(localRoot.leftChild);
                System.out.print(localRoot.iData + " ");
                inOrder(localRoot.rightChild);
            }
        }

    执行结果:G D H B E I A C J F

    投影法:

    image

    结果:G D H B E I A C J F

    2.前序遍历

    前序遍历多用于算术运算中表达式的表示方法。

    方法:

    1.访问这个节点。

    2.调用自身遍历该节点的左子树。

    3.调用自身遍历该节点的右子树。

    代码:

         /**
         * 前序遍历
         * @param localRoot 节点值
         */
        private void preOrder(Node localRoot)
        {
            if (localRoot != null)
            {
                System.out.print(localRoot.iData + " ");
                preOrder(localRoot.leftChild);
                preOrder(localRoot.rightChild);
            }
        }

    执行结果:A B D G E I C F G

    3.后序遍历

    方法:

    1.调用自身遍历该节点的左子树。

    2.调用自身遍历该节点的右子树。

    3.访问这个节点。

    代码:

        /**
         * 后续遍历
         * @param localRoot 节点值
         */
        private void postOrder(Node localRoot)
        {
            if (localRoot != null)
            {
                postOrder(localRoot.leftChild);
                postOrder(localRoot.rightChild);
                System.out.print(localRoot.iData + " ");
            }
        }

    执行结果:G H D I E B J F C A

    总结:

    记忆遍历的三种方法,根据”访问这个节点”所在的位置确定。

    如果在前面,则是前序遍历。

    如果在中间,则是中序遍历。

    如果在后面,则是后序遍历。

  • 相关阅读:
    LeetCode#13罗马数字转整数
    LeetCode#7整数反转
    LeetCode#1两数之和
    LeetCode#26删除排序数组中的重复项
    LeecCode#1550存在连续三个奇数的数组
    LeetCode#228汇总区间
    LeetCode#1476子矩形查询
    LeetCode#1535找出数组游戏的赢家
    LeetCode#867转置矩阵
    Vue源码——摸着石头过河
  • 原文地址:https://www.cnblogs.com/winlrou/p/3545012.html
Copyright © 2011-2022 走看看