二叉树的实现

在回忆学生时代学习树这种数据结构时,仅有的回忆就是前中后遍历,其余毫无印记

在工作当中,好像就没有怎么用到,更不用说编码去实现,调试

其实不然,AVL树,红黑树等等都是有实际的应用,所以掌握好基本的知识点还是非常必要的

以最简单常用的基础开始

树的表现:

链表 的形式最为常见,因为树是有分支的,是 非线性的

正如自然界的树,只不过树根在上,分支在下,最末为叶子

我们研究的都是基于 二叉树

二叉树:是 n(n >= 0)个结点的有限集合,该集合或为空集(空二叉树)。或者由一个根节点和两颗互不相交的,分别称为根节点的左子树和右子树的二叉树组成

树的操作:

        创建:通过不断的创建树的节点,组成了一颗自定义树的形态

        查找:遍历树的所有节点

                  前序遍历,中序遍历,后序遍历,层序遍历

树的特性:

正如图示,树是一种 非线性的存储关系

父节点下面存在左右子节点,每个子节点又可能是以该节点为根节点的一颗子树

我们通过链表指针的关系构建的树,自然能够通过指针找寻到想要的数据

树的创建:

1. 树的结构体

struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
};

2. 创建

struct TreeNode* createNode(int val, struct TreeNode* left, struct TreeNode* right)
{
	struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	node->val = val;
	node->left = left;
	node->right = right;
	
	return node;
}

3. 自定义树,需要从叶子节点开始写,这样父节点才能知道

struct TreeNode* node7 = createNode(7, NULL, NULL);
struct TreeNode* node6 = createNode(6, NULL, node7);
struct TreeNode* node5 = createNode(5, NULL, NULL);
struct TreeNode* node4 = createNode(4, NULL, NULL);
struct TreeNode* node3 = createNode(3, node5, node6);
struct TreeNode* node2 = createNode(2, node4, NULL);
struct TreeNode* node1 = createNode(1, node2, node3);

树的查找: 

        二叉树遍历之递归遍历

        二叉树遍历之迭代遍历

       

更多数据结构详解

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值