二叉树的基础知识

原创 2016年05月31日 11:16:07
为何要重点研究结点最多只有两个 “叉” 的树? 
        二叉树的结构最简单,规律性最强; 可以证明,所有树都能转为唯一对应的二叉树。

二叉树的定义
        定义:是n(n≥0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成 。 
        逻辑结构:  一对二(1:2)  
        基本特征: ① 每个结点最多只有两棵子树(不存在度大于2的结点); ② 左子树和右子树次序不能颠倒(有序树)。 
基本形态:


二叉树的存储结构
一、顺序存储结构 按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。
        问:顺序存储后能否复原成唯一对应的二叉树形状? 答:若是完全/满二叉树则可以做到唯一复原。(使用性质5 )而且有规律:下标值为i的双亲,其左孩子的下标值必为2i,其右孩子的下标值必为2i+1(即性质5)例如,对应[2]的两个孩子必为[4]和[5],即B的左孩子必是D,右孩子必为E。

讨论:不是完全二叉树怎么办?
答:一律转为完全二叉树! 方法很简单,将各层空缺处统统补上“虚结点”,其内容为空。

二、链式存储结构
        用二叉链表即可方便表示。一般从根结点开始存储。 (相应地,访问树中结点时也只能从根开始)
        注:如果需要倒查某结点的双亲,可以再增加一个双亲域(直接前趋)指针,将二叉链表变成三叉链表。
二叉树结点数据类型定义: 
typedef struct BiTNode 
{      
        int data;      
        struct BiTNode  *lchild, *rchild; 
} BiTNode, *BiTree;

满二叉树:一棵深度为k 且有2k -1个结点的二叉树。(特点:每层都“充满”了结点)

完全二叉树:深度为k 的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k 的满二叉树中编号从1至n的结点一一对应。
完全二叉树的特点就是,只有最后一层叶子不满,且全部集中在左边。这其实是顺序二叉树的含义。在图论概念中的“完全二叉树”是指n1=0的情况。

它们在顺序存储方式下可以复原!










版权声明:本文为博主原创文章,未经博主允许不得转载。

二叉树基础及应用

二叉树基础: 刚看到堆排序,顺便记录一下关于树的一些基本概念: 前言 前面介绍的栈、队列都是线性结构(linear structure)。而树是非线性结构(non-linear structu...
  • laokdidiao
  • laokdidiao
  • 2016年07月08日 15:43
  • 2903

二叉树基础知识总结

题外话 昨晚面了腾讯,问了一个完全二叉树的题,竟然让我算了快10分钟,因为等比公式记错了导致最后用最原始的方法推算结果也没算对,一下子就懵了。本来精心准备了1周的面试,最后因为自己基础知识记忆不牢固...
  • xiaoquantouer
  • xiaoquantouer
  • 2017年03月24日 15:46
  • 1077

二叉树的基本操作

二叉树作为一种非常重要的数据结构,今天对其做简单的回顾 1、二叉树的定义 typedef char ElementType; typedef struct BiTreeNode { Eleme...
  • sysu_arui
  • sysu_arui
  • 2012年08月14日 17:22
  • 24522

基于二叉树的加密和解密

最老师让写一个学生成绩管理系统,其中账号密码用二叉树加密保存,试着写了下,但写完感觉有各种bug,在此贴出代码和原理,作为知识积累。  二叉树加密原理:首先将明文转化成二进制字符,然后构建一个二叉树,...
  • qq_31063213
  • qq_31063213
  • 2017年05月16日 15:38
  • 334

二叉树基础

一:前言TOC   本文主要讲解以下二叉树的 4 个部分: (1)构造二叉树; (2)前,中,后序遍历(递归与非递归)和层次遍历; (3)求节点数; (4)求叶子数。 在此先约定下二叉树的...
  • The_star_is_at
  • The_star_is_at
  • 2017年05月05日 13:55
  • 137

二叉树

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉树的每...
  • yty19970212
  • yty19970212
  • 2018年02月09日 21:48
  • 3

二叉树学习(一)

树的基础知识 树的定义: 树包含n(n ≥\ge 0 )个节点,n = 0时称为空树。 在树的结构关系中,有且仅有一个节点没有前趋节点,这个节点称为树的根节点。 除根节点外...
  • u013889450
  • u013889450
  • 2016年01月21日 09:57
  • 1203

二叉树基础知识

【边学边记】之二叉树基础知识 二叉树:二叉树是一棵树,其中每个节点都不能有多于两个的儿子。 二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (1)空二叉树——(a);(...
  • pambassador
  • pambassador
  • 2017年04月24日 14:31
  • 147

基础入门之二叉树

二叉树的基本操作
  • manyushenlan
  • manyushenlan
  • 2016年06月15日 18:45
  • 228

二叉树的基本操作实现

#include #include #include #define PF printf("\n") int m,n,max; typedef struct BiTNode { int data;...
  • Cai_Nia
  • Cai_Nia
  • 2016年10月23日 17:30
  • 576
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树的基础知识
举报原因:
原因补充:

(最多只允许输入30个字)