美文网首页
4. 二叉树的遍历

4. 二叉树的遍历

作者: 郑行_aover | 来源:发表于2019-05-20 16:38 被阅读0次

1. 二叉树的遍历


1. 二叉树的五大性质

  • 性质1:在二叉树的第i层上至多有2i-1个结点(i>=1)。
  • 性质2:深度为k的二叉树至多有2k-1个结点(k>=1)。
  • 性质3:对任何一颗二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1.
  • 性质4:具有n个结点的完全二叉树深度为[log2n]+1 ([x]表示不 大于 x的最大整数)。
  • 性质5:如果对一颗有n个结点的完全二叉树(其深度为[log2n]+1)的结点按层序编号(从第1层到第[log2n]+1层,每层从左到右),对任意一个结点i(1<=i<=n)有:

如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点[i/2]
如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点2i。
如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1。

2. 二叉树的遍历

2.1 前序遍历

根——左——右

void ProOrderTraverse(Tree T){
    if(T == null){
        return;
    }
    printf(“%c”,T-data);
    ProOrderTraverse(T->lchild);
    ProOrderTraverse(T->rchild);
}

2.2 中序遍历

左——根——右

void ProOrderTraverse(Tree T){
    if(T == null){
        return;
    }
    ProOrderTraverse(T->lchild);
    printf(“%c”,T-data);
    ProOrderTraverse(T->rchild);
}

2.3 后序遍历

左——右——根

void ProOrderTraverse(Tree T){
    if(T == null){
        return;
    }
    ProOrderTraverse(T->lchild);
    ProOrderTraverse(T->rchild);
     printf(“%c”,T-data);
}

相关文章

  • 3.有关二叉树的算法

    1.分层遍历二叉树:宽度优先遍历 2.分层遍历应用,按层打印二叉树 3.前序遍历二叉树 4.前序遍历,迭代 5.中...

  • 算法精选题总结之二叉树类

    1.二叉树的中序遍历中序遍历的迭代方法中序遍历的递归方法2.二叉树前序遍历3.二叉树后续遍历4.二叉树的最近公共祖...

  • 2020-08-31二叉树遍历

    迭代方式遍历二叉树 1.前序遍历(根左右) 2.中序遍历(左根右) 3.后序遍历(左右根) 4.层序遍历

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 二叉树遍历

    二叉树 二叉树的存储结构 前序遍历 中序遍历 后序遍历 遍历代码 反转二叉树 深入学习二叉树 二叉树-你必须要懂!...

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • 二叉树三种遍历Swift代码实现

    二叉树的三种遍历 二叉树 前序遍历 中序遍历 后序遍历 另外 不得不说,得到二叉树的前序遍历和中序遍历的结果或者后...

  • 数据结构与算法之二叉树遍历(七)

    目录 前序遍历中序遍历后序遍历层序遍历遍历方式的选择条件根据遍历结果重构二叉树翻转二叉树计算二叉树的高度判断一棵树...

  • 二叉树的遍历

    二叉树的遍历 二叉树遍历 分为前序遍历、中序遍历和后序遍历。 前序遍历 (DLR) 先访问根节点,然后前序遍历左子...

网友评论

      本文标题:4. 二叉树的遍历

      本文链接:https://www.haomeiwen.com/subject/sznkzqtx.html