zoukankan      html  css  js  c++  java
  • 二叉树遍历

      首先来说一下二叉树的定义:二叉树是一个连通的无环图,并且每一个顶点的度不大于3;有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。二叉树不是树的特殊情形,尽管与树有许多相似之处,但树和二叉树 有两个主要的区别:1、树中节点的最大度数没有限制,而二叉树节点度数最大限制是2;2、树的节点无左右之分,而二叉树有。

      二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0 = n2 + 1。二叉树的链式存储结构是一类重要的数据结构。

      二叉树遍历:遍历是对树的一种最基本运算,所谓二叉树遍历,就是按照一定的规则和顺序走遍二叉树的所有节点,使每一个节点都被访问到,而且仅访问一次。由于二叉树是非线性结构,因此树的遍历实质上是将二叉树的各个节点转化为一个线性序列来表示。二叉树遍历主要分4种:先序遍历,中序遍历,后序遍历。层次遍历。

      先序遍历:首先访问根,再先序遍历左(右)子树,最后先序遍历右(左)子树。

      中序遍历:首先中序遍历左(右)子树,再访问根,最后中序遍历右(左)子树

      后序遍历:首先后序遍历左(右)子树,再后序遍历右(左)子树,最后访问根。

      层次遍历:即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同)。

      举例来说:

        

      图一的先序遍历:A-B-C-D-E-F-G  (根-左子树-右子树)

      图一的中序遍历:C-B-D-A-F-E-G (左子树-根-右子树)

      图一的后序遍历:C-D-F-G-B-E-A (左子树-右子树-根)

      图一的层序遍历:A-B-E-C-D-F-G (先遍历根再遍历子树)

                

                        图二

      图二的先序遍历:A-B-C-D-E-G-F  (根-左子树-右子树)

      图二的中序遍历:C-B-E-G-D-F-A(左子树-根-右子树)

      图二后序遍历:C-G-E-F-D-B-A(左子树-右子树-根)

      图二的层序遍历:A-B-C-D-E-F-G (先遍历根再遍历子树)

  • 相关阅读:
    这篇通俗实用的Vlookup函数教程,5分钟就可以包你一学就会
    nginx 常见正则匹配符号表示
    Nginx if 条件判断
    nginx 将请求全部指向到一个页面
    windows10下面部署nginx(解决文件名中文乱码问题)
    二.Nginx反向代理和静态资源服务配置
    Nginx的使用(一)代理静态文件
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    如何让NGINX显示文件夹目录
    Nginx 如何设置反向代理 多服务器,配置区分开来,单独文件保存单个服务器 server 主机名配置,通过 include 实现
  • 原文地址:https://www.cnblogs.com/zw0718/p/7667608.html
Copyright © 2011-2022 走看看