了解二叉树

Posted 智慧大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解二叉树相关的知识,希望对你有一定的参考价值。

一、二叉树的种类

1、满二叉树

   0

 0   0

0 0 0 0

满二叉树深度为2^k-1,例子即为3

2、完全二叉树

完全二叉路底层不一定满,但节点一定是从左到右连续的。
下面是一个完全二叉树

       0

   0       0

 0   0   0   0

0 0 0 0

下面不是一个完全二叉树

       0

   0       0

 0   0   0   0

0 0 0   0

3、二叉搜索树

二叉搜索树对于树的结构没有要求,但是对于树的元素必须保证有规律,规律一般为左子树或节点都小于他的父节点,右子树或节点都大于他的父节点,时间复杂度为O(logN)级别。

   6

 3   9

1 4 8 10

4、平衡二叉搜索树

左子树和右子树高度的绝对值不能超过1,一般map、set都是用平衡二叉搜索树。
下面不是一个平衡二叉搜索树:

   6  

 3

1 4

下面是一个平衡二叉搜索树:

   6  

 3   9

1 4

下面是一个平衡二叉搜索树:

   6  

 3   9

1 4 8 

下面是一个平衡二叉搜索树:

         6  

     3       9

   1   4   8 

 0

二、二叉树的存储

5、链式存储


6、线型存储

左节点为2i+1,右节点为2i+2

三、二叉树的遍历

7、深度优先搜索

我们普通使用到前序、中序、后序搜索算法都属于深度优先算法,一般使用迭代或递归实现搜索算法。

5

4 6

1 2 7 8


前序遍历(中–>左–>右):5,4,1,2,6,7,8
中序遍历(左–>中–>右):1,4,2,5,7,6,8
后序遍历(左–>右–>中):1,2,4,7,8,6,5

8、广度优先搜索

一层一层或者一圈一圈的去遍历,即层序遍历,迭代法;

四、二叉树的定义

c++

struct TreeNode{

int val;

TreeNode* Left;

TreeNode* Right;

//构造函数

TreeNode(int t){

this->val=t;

this->Left=Null;

this->right=Null;

}

};

golang

type TreeNode struct {

Value int

Left , Right *TreeNode

}


以上是关于了解二叉树的主要内容,如果未能解决你的问题,请参考以下文章

第九周

第九周

python代码计算二叉树的深度

了解二叉树

二叉树模型了解一下

带你了解二叉树