【数据结构】链式二叉树的实现(下)(c语言)

前序

二叉树的概念前面我们已经讲过了,二叉树的概念可以跳转至二叉树的概念及顺序存储的实现

创建一个简单的二叉树

要创建一颗简单的二叉树呢,首先我们需要先定义一个结构体,data表示数据域,left表示左孩子节点,right表示右孩子节点

 定义一个创建节点的接口

 接着就可以创建一颗简单的二叉树了

 以上步骤并不是创建二叉树的真正步骤,只是为了让我们后续学习二叉树的基本操作奠定基础,以便后续检查后续接口是否准确

 上图为我们创建的二叉树示意图

二叉树的相关接口

一、二叉树的遍历

二叉树的遍历分为 前序遍历中序遍历后序遍历以及层序

现在主要说的是前面三种遍历,等差不多实现完了二叉树的基本接口,再诉说二叉树的层序遍历

1.1二叉树的前序遍历

前序遍历:先根节点,再访问左子树,最后访问右子树

 1.2二叉树的中序遍历

中序遍历:先访问二叉树的左子树,在访问根,最后访问右子树

 1.3二叉树的后序遍历

后序遍历:先访问左子树,再访问右子树,最后访问根

 现在让我们检查一下实现的接口准不准确

 通过上图可以发现目前实现的接口没有问题,那么就可以接着实现下面的接口了

1.4二叉树节点个数

可以使用递归的方式,该方法,从后往前一次把数据传上来了,并加上自身

 1.5二叉树的叶子节点个数

 1.6二叉树的深度

采用分治算法,从下往上一次返回,思想:当左节点的高度大于右节点的高度时,左节点高度加一返回,否则右节点高度加一返回

 1.7第K层节点的个数

当二叉树中的层数小于k时则说明第k层没有节点,返回零,当递归到第k层时返回一,没有到第k层就继续往下递归,知道第k层

 1.8查找二叉树中的值为x的节点

找到就返回

 1.9二叉树的销毁

传二级指针的目的是为了在函数里面把外面的指针置空

 

 二、通过前序的方式构建二叉树

 

 通过下图的检查,发现代码没问题

 2.2二叉树的层序遍历

设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。

层序遍历思想:先把二叉树的头节点存入队列,然后出队顶元素,出的同时把堆顶元素的左右子节点插入队列中,依次迭代

 下图结果

 2.3判断二叉树是否为完全二叉树

通过了解完全二叉树的概念可以知道,完全二叉树的节点都是左对齐的,所以可以使用层序的方法

依次把数据出入队列中,当队顶元素为空的时候,就停止入数据了,然后检查队列中的数据,是否有不为空的数据,如果有一个不为空的数据那么该二叉树就不是完全二叉树,否则为完全二叉树

 今天的分享就到这了,如有不足还望指出,感谢支持!

猜你喜欢

转载自blog.csdn.net/m0_72532428/article/details/129955767