zoukankan      html  css  js  c++  java
  • 二叉树的理解

    这里写图片描述

    二叉树具有天然递归结构
    每个节点的左子树也是二叉树
    每个节点的右子树也是二叉树
    二叉树不一定是满的

    二分搜索树
    每个节点的值大于其左子树的所有节点的值
    每个节点的值小于其左子树的所有节点的值
    每个子树也是二分搜索树
    链表是线性的,可以使用循环。

    树是非线性的,

    二叉树的前序遍历
    解释:前序遍历首先访问的根节点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,任然先访问根节点,然后先访问根节点,然后遍历左子树,最后遍历右子树。
    若二叉树为空则结束返回,否则:
    (1)访问根结点。
    (2)前序遍历左子树。
    (3)前序遍历右子树 。
    需要注意的是:遍历左右子树时仍然采用前序遍历方法。
    这里写图片描述

     public void preOrder(){
            preOrder(root);
        }
    
        private void preOrder(Node node) {
            if (node == null) {
                return;
            }
            System.out.println(node.e);
            preOrder(node.left);
            preOrder(node.right);
        }

    二叉树的中序遍历
    这里写图片描述

     public void inOrder(){
            System.out.println();
            inOrder(root);
    
        }
    
        private void inOrder(Node node) {
            if(node==null){
                return;
            }
           inOrder(node.left);
            System.out.println(node.e);
           inOrder(node.right);
        }

    二叉树的后序遍历
    这里写图片描述


        public void postOrder(){
            System.out.println();
            postOrder(root);
        }
    
        private void postOrder(Node node) {
            if(node==null){
                return;
            }
           postOrder(node.left);
            postOrder(node.right);
            System.out.println(node.e);
        }

    二叉树非递归实现比递归实现复杂的多。
    二叉树 的前中后序遍历都是深度优先遍历(先往最深的地方遍历)
    二叉树的广度优先遍历的(一层一层的遍历)
    优势:更快的找到问题的解
    常用于算法设计中:最短路径的问题。

    这里写图片描述

  • 相关阅读:
    STL源码剖析 真是一本好书
    消息映射与消息路由原理
    linux下无法正常打开pdf文件的解决方法
    [转载]Amazon's Dynamo 中文版
    [转载]NoSQL数据建模技术
    [转载]linuxkerneltuningfor500k
    YCSB初步介绍
    Lamport's Logical Clocks 和 Vector Clock
    googleperftools 试用
    [转载]Big List Of 20 Common Bottlenecks
  • 原文地址:https://www.cnblogs.com/narojay/p/10812627.html
Copyright © 2011-2022 走看看