数据结构—二叉树

一、基本概念

1、什么是树、二叉树、左右子树、(根或叶子)节点就不必赘述了。

 
 
 

         

注:图片摘自百度百科

2、节点的度   : 节点有几棵子树该节点的度就为几。二叉树节点的度为{0, 1, 2}

3、节点的深度: 从根到该节点的唯一路径的长。根节点的深度为0

4、节点的高度: 从该节点到叶节点的最长路径(可能有好几条)的长。叶节点的高度为0

5、树的高度   : 树的高度就是根节点的高度。

二、特殊的二叉树

1、满二叉树   :除了叶节点外所有节点都有左右子树且叶节点全部落在最下层。

2、完全二叉树:在满二叉树的最下层从左至右添加一些叶节点就构成了完全二叉树。即完全二叉树的叶节点可能落在

                          最下层和次下层且除了叶节点外所有节点都有左右子树。同时,最下层的叶节点从左至右不能被隔开。

3、平衡二叉树 : 它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

4、有序二叉树(二叉查找树、二叉搜索树) : 所有节点的大小关系都满足 左子树 < 根节点 < 右子树。

 

三、二叉树的基本操作

1、树的实现

struct TreeNode;
typedef struct TreeNode* PtrToNode;
typedef    PtrToNode    Tree;
struct TreeNode {
    ElementType element;
    Tree left;
    Tree right;
};

2、树的遍历:前、中、后序遍历

递归思想的运用,遍历文件目录的伪代码:

static void ListDir(DirectoryOrFile D, int Depth)
{
    if (D is a legitimate entry) 
    {
        PrintName(D,Depth);
        if (D is a directory) 
        {
            for each child C of D
                ListDir(C, Depth-1); // 递归遍历
        }
    }
}

3、插入

4、删除

5、计算树的节点个数

6、计算树的深度

7、树的合并

四、将要讨论的几种典型树

1、二叉查找树

2、AVL树

3、伸展树

4、红黑树

5、堆(优先队列 )

6、k-d树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值