- 浏览: 768636 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的,互不相交的二叉树组成。
相关性质:
1.在二叉树的第i(i>=1)层最多有2的i-1次方个结点。
2.深度为k(k>=0)的二叉树最少有k个结点,最多有2的k次方-1个结点。
3.叶结点数等于度为2的非叶结点数加1:N0=N2+1
4.满二叉树:深度为k的满二叉树有2的k次方-1个结点
5.完全二叉树:每个结点都与高度为k的满二叉树中编号1~n的结点一一对应
6.具有n个结点的完全二叉树的深度为log2(n+1)向上取整
抽象数据类型:
相关性质:
1.在二叉树的第i(i>=1)层最多有2的i-1次方个结点。
2.深度为k(k>=0)的二叉树最少有k个结点,最多有2的k次方-1个结点。
3.叶结点数等于度为2的非叶结点数加1:N0=N2+1
4.满二叉树:深度为k的满二叉树有2的k次方-1个结点
5.完全二叉树:每个结点都与高度为k的满二叉树中编号1~n的结点一一对应
6.具有n个结点的完全二叉树的深度为log2(n+1)向上取整
抽象数据类型:
#ifndef BINARYTREE_H #define BINARYTREE_H template<typename T> class BinaryTree{ public: BinaryTree(); //item为根,lch,rch为左右子树 BinaryTree(BinTreeNode<T>* lch,BinTreeNode<T>* rch,T item); int Height(); int Size();//结点个数 bool IsEmpty(); BinTreeNode<T> *Parent(BinTreeNode<T>* current); BinTreeNode<T> *LeftChild(BinTreeNode<T>* current); BinTreeNode<T> *RightChild(BinTreeNode<T>* current); bool Insert(T item); bool Remove(T item); bool Find(const T& item)const; bool getData(const T& item)const; BinTreeNode<T>* getRoot()const; void preOrder(void(*visit)(BinTreeNode<T>*p));//前序 void inOrder(void(*visit)(BinTreeNode<T>*p));//中序 void postOrder(void(*visit)(BinTreeNode<T>*p));//后序 void levelOrder(void(*visit)(BinTreeNode<T>*p));//层次 }; #endif // BINARYTREE_H
发表评论
-
时间复杂度推导
2012-06-05 22:57 9821.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 808数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
排序概念
2011-06-24 14:51 788数据表:待排序数据元素的有很集合 排序码:通常数据元素有多个 ... -
图的基本概念
2011-06-20 16:18 749完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 515红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1100template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1081散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 804#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 925字典:以集合为基础,并支持支持Member,Insert和Re ... -
LinkedSet
2011-06-07 13:08 924改了很久的bug #ifndef LINKEDSET_H ... -
bitset
2011-06-06 12:27 885bitSet.h #ifndef BITSET_H #d ... -
Huffman树
2011-06-02 11:06 917Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉 ... -
堆
2011-06-02 09:19 952在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 602森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1264binaryTree.h #ifndef LINKEDBI ... -
树基本概念
2011-05-30 09:28 893结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 936广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 931矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
优先级队列
2011-05-21 11:24 602PQueue.h #ifndef PQUEUE_H #d ... -
链式队列
2011-05-20 12:05 828LinkedQueue.h #ifndef LINKEDQ ...
相关推荐
本资料“玩转二叉树基本概念与操作”深入浅出地介绍了二叉树的基本概念及其常见操作,旨在帮助读者掌握这一关键领域的知识。 二叉树的基本概念: 1. 定义:二叉树是一种特殊的树形数据结构,每个节点最多有两个子...
在这个《数据结构课程设计》项目中,我们专注于二叉树的基本操作,通过两个源文件(file1.cpp 和 file2.cpp)以及一个头文件(head.h)实现了一系列的二叉树操作。以下是这些操作的详细说明: 1. **创建二叉树**:...
### 一、二叉树基本概念 二叉树是一种数据结构,在计算机科学中被广泛应用。它是由一个或多个节点组成的数据结构,其中每个节点最多有两个子节点,通常被称为左子节点和右子节点。在实际应用中,二叉树常常用于表示...
#### 一、二叉树基本概念 二叉树是一种树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。在计算机科学中,二叉树经常被用于实现各种算法和数据结构,如搜索树、堆以及表达式树等。 #### ...
### 一、二叉树基本概念 #### 1.1 定义 二叉树(Binary Tree)是每个节点最多有两个子节点的树形结构。通常分为左子节点和右子节点。二叉树中的节点数量可以为零,这种情况下称为空二叉树。 #### 1.2 分类 - **满...
### 一、二叉树基本概念 在计算机科学中,二叉树是一种非常重要的数据结构,它具有以下特点: - **节点**:每个节点最多有两个子节点。 - **根节点**:没有父节点的唯一节点。 - **叶子节点**:没有子节点的节点。 ...
**二叉树基本概念** 二叉树是一种非线性数据结构,每个节点包含最多两个子节点,分别称为左子节点和右子节点。二叉树的形状可以是任意的,但通常我们关注几种特殊形态的二叉树,如满二叉树(所有层都是满的,除了...
通过对本实验的学习,不仅能够加深对二叉树基本概念的理解,还能掌握二叉树的重要操作方法,如创建、遍历等。此外,实验还涉及了菜单驱动程序的设计,有助于提高实际编程能力。这些技能对于今后学习更高级的数据结构...
### 二叉树基本概念 二叉树是一种树形数据结构,在这种结构中,每个节点最多有两个子节点,通常被称作左子节点和右子节点。二叉树可以是空的,也可以由一个根节点及其两个子二叉树组成。二叉树有多种类型,其中二叉...
#### 一、二叉树基本概念 二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树在计算机科学中有着广泛的应用,如搜索算法、排序算法等。 #### 二、Java中实现二叉树的...
一、二叉树基本概念 1. 节点:二叉树的每个元素称为节点,包含数据和指向子节点的指针。 2. 根节点:没有父节点的节点,是树的起点。 3. 叶节点:没有子节点的节点,也称为终端节点。 4. 非叶节点:有子节点但不是...
### 二叉树基本概念 二叉树是一种非常重要的数据结构,它是由节点组成的一种层次结构。每个节点最多有两个子节点,分别称为左子节点和右子节点。在二叉树中,除了根节点之外的其他节点都只有一个父节点。二叉树有很...
### 一、二叉树基本概念 在开始介绍具体的算法之前,我们先来了解一下二叉树的基础定义。二叉树是由n(n≥0)个有限节点组成的一个数据结构,它具有以下特点: - 如果二叉树为空,则称其为空二叉树。 - 如果二叉树不...
这个压缩包文件“C++二叉树基本操作”显然是一个关于使用C++实现二叉树操作的示例代码集,对于学习C++和数据结构的人来说极具价值。 二叉树是由节点(或称为元素)构成的数据结构,每个节点最多有两个子节点,通常...
### 一、二叉树基本概念 在计算机科学中,**二叉树**是一种树形数据结构,其中每个节点最多有两个子节点,通常被称为左子节点和右子节点。二叉树广泛应用于各种计算机应用中,如搜索、排序、数据索引等。在本篇文章...
一、二叉树的基本概念 1. 节点:二叉树的基本单元,包含一个值和两个指向子节点的指针。 2. 根节点:二叉树中没有父节点的节点,是树的起点。 3. 叶节点:没有子节点的节点。 4. 分支节点:有至少一个子节点的节点...
**二叉树基本概念:** 1. **节点(Node)**:二叉树的基本组成单位,包含一个数据元素和两个指向子节点的指针。 2. **根节点(Root)**:树的顶端节点,没有父节点。 3. **子节点(Child Node)**:一个节点下的任何...
这些操作不仅加深了对二叉树基本概念的理解,而且对于二叉树的深入研究和应用,如在表达式树、查找树等更复杂数据结构中的应用提供了实践基础。在数据结构和算法教学中,这一程序也可以作为教学示例,帮助学生更好地...