二叉树逻辑结构重点



二叉树

1.满二叉树:在二叉树中所有的根结点都有左右子数。并且所有的叶子都在同一层上

2.完全二叉树:编号为i的结点与同深度的满二叉树中编号为i的元素位置相同。

3.满二叉树特点:

a.叶子只能出现在最下面一层;

b.只有度为0或2的

4.完全二叉树特点:

a.叶子只能出现在最下两层,且最下层的叶子主要集中在左侧的连续位置

b.若有且仅有一个度为1的结点,并且该节点只能有左结点。

5.二叉树性质:

a.二叉树的第i层上最多有2^(i-1)个结点

b.一颗深度为K的二叉树中,最多有2^k-1个结点,最少有K个结点

(出现最多的情况是满二叉树 ,最少的情况是斜二叉树)

c.二叉树中,如果叶子的结点的个数为n0,度=2的结点个数为n2,则有n0=1+n2;

d.具有n个结点的完全二叉树的深度为【log2n(以二为底n的对数)】+1

e.具有n个结点的完全二叉树中的结点从1开始按层标号,任意的编号为i的结点有:

@1.如果i>1,结点i的双亲的编号为【i/2】,否则结点i就是根结点,无双亲;

@2.若2i<=n,结点i的左孩子的编号为2i,否则无左孩子。

@3.若2i+1<=n,结点i的右孩子编号为2i+1,否则无右孩子。                        *****

6.二叉树的遍历:

从根结点出发,按照某种次序访问书中的所有的结点,每个结点都被访问密且仅被访问一次。因为二叉树有根结点和左右子数,所有遍历就

有三种方式:前序遍历||中序遍历||后序遍历。另外从另一个角度考虑可以按层遍历。所以一共四种遍历方式。

a.前序遍历:根结点->左结点->右结点

b.中序遍历:左结点->根结点->右结点

c.后序遍历:左结点->右结点->根结点

d.层序遍历:按曾从上到下,在每层中按从左到右的顺序遍历。

时间: 2024-10-12 04:17:58

二叉树逻辑结构重点的相关文章

二叉树的递归创建

1.树 (1).树形结构本身具有递归的性质(在其后的编程中体现的淋漓尽致)! 树是一种非常重要的非线性结构. (2).几个概念:结点的度,就是分支个数(孩子个数): 树的度,结点度中最大的(孩子最多的): 非叶子结点,度 > 0 (有孩子结点): 叶子结点,度为0的 (没有孩子结点): 树的高度,从1开始算: (3).为什么要学习二叉树? 原因:所有的树形结构(包括森林)都可以转化为二叉树.二叉树是树形结构的基础, 只有学好了二叉树才能学好其它的. 2.二叉树 (1).二叉树分左右,所以又叫做有

小代码 向原文学习 BST 简单的C语言版本

   /********************************  运行环境:http://www.anycodes.cn/zh/  原文:http://blog.csdn.net/u014488381/article/details/41719765/  二叉排序树的查找算法的C代码实现  修改以直接测试  待C++类封装版本  *********************************/ #include <stdio.h> #include <stdlib.h>

数据结构(三):非线性逻辑结构-特殊的二叉树结构:堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树

在上一篇数据结构的博文<数据结构(三):非线性逻辑结构-二叉树>中已经对二叉树的概念.遍历等基本的概念和操作进行了介绍.本篇博文主要介绍几个特殊的二叉树,堆.哈夫曼树.二叉搜索树.平衡二叉搜索树.红黑树.线索二叉树,它们在解决实际问题中有着非常重要的应用.本文主要从概念和一些基本操作上进行分类和总结. 一.概念总揽 (1) 堆 堆(heap order)是一种特殊的表,如果将它看做是一颗完全二叉树的层次序列,那么它具有如下的性质:每个节点的值都不大于其孩子的值,或每个节点的值都不小于其孩子的值

数据结构(三):非线性逻辑结构-二叉树

接着上一次对非线性逻辑数据结构树的内容,开启对二叉树的深入复习和总结.首先还是先回顾一下几个重要的概念: 一.回顾 1. 满二叉树与完全二叉树 满二叉树指的是除了叶子节点外所有的节点都有两个子节点.这样可以很容易的计算出满二叉树的深度,要掌握满二叉树的一些性质. 完全二叉树则是从满二叉树继承而来,指的所有的节点按照从上到下,从左到右的层次顺序依次排列所构成的二叉树称之为完全二叉树.所以可以想象,对于深度为h的完全二叉树,前h-1层可以构成深度为h-1的满二叉树,而对于第h层则是从左到右连续排列的

打印二叉树某一层次的值(重点)

方法一:递归 1 void printNLevel(TreeNode *root, int n) 2 { 3 if (root == NULL) 4 { 5 return ; 6 } 7 8 if (n == 1) 9 { 10 cout << root->data << endl; 11 } 12 else 13 { 14 printNLevel(root->left, n-1); 15 printNLevel(root->right, n-1); 16 } 1

第五章 树和二叉树

上章回顾 单链表的基本操作,包括插入.删除以及查找 双向链表和循环链表的区别 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第五章 第五章 树和二叉树 树和二叉树 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 预习检查 什么是二叉树 树的遍历有哪几种方式 树有哪些应用 [email pr

树和二叉树

以下的内容做为学习笔记,复制别人的,感觉总结的比较好: 第5章 树和二叉树 本章中主要介绍下列内容:  1.树的定义和存储结构  2.二叉树的定义.性质.存储结构  3.二叉树的遍历.线索算法  4.树和二叉树的转换  5.哈夫曼树及其应用课时分配:     1.2两个学时,3四个学时,4两个学时, 5两个学时,上机两个学时重点.难点:     二叉树的遍历.线索算法.哈夫曼树及其应用 第一节 树 1.树的定义和基本运算1.1 定义    树是一种常用的非线性结构.我们可以这样定义:树是n(n≥

遍历n个节点能够形成的所有二叉树

帮师兄做的一个问题,就是求对n个不同节点能够形成所有的二叉树的形式,不考虑旋转对称性和同构. 问题描述:给定n个节点,查看能够有多少种不同的二叉树形成,并输出出来 算法描述:使用最基本的“分治法“(Divide and Conquer)思想,任选一个节点作为根节点,将剩余节点组成的集合进行分割(Partition),一部分放到左子树进行递归,另一部分放到右子树递归.重点为两部分:一部分使用二进制对集合进行分割,其实就是就集合的”幂集“,另一部分是如何存储.另外还可以进行暴力搜索. 测试用例:n=

二叉树的算法与讲法

二叉树属于数据结构中层次性的数据关系,他又祖先--后代,上级--下属,整体--部分以及其他类似的关系,树结构在计算机领域中有着广泛的应用,例如在编译程序中庸语法树来表示元程序的语言结构,在数据挖掘中庸决策树来进行数据分类等等.在我的前一个博客中也有提到就是二叉树的相关知识重点.不清楚的同行可以参考我的文章.其中若有不妥之处,还请大家指点. 下面是我在学习二叉树的时候编写的二叉树的几个常见的功能的函数,以及他的一些构造函数等等. #ifndef BITREE_H #define BITREE_H