开发工具和关键技术: Visual Studio/C作者:何文涛写作时间: 2019-8-05二叉树的制作和简单运用上次已经发表过,现在正在寻求二叉树数量的深度。
以求二叉树的算法为例。
//二叉树节点
typedef struct binary节点
{
char ch;
struct BINARYNODE* lchild;
结构二进制节点* rchild;
}BinaryNode;
首先定义了制作二叉树所需的结构体,作为存储二叉树的要素定义了char型的ch。 另一方面,下面的两个指针是左边的子树和右边的子树。
//二叉树计算深度算法
二进制节点*根(intcaculatetreedepth ) )。
{
if (root==空) )。
{
返回0;
}
int depth=0
//求出左边子树的高度
intleftdepth=caculatetreedepth (root-lchild );
//求出右边子树的高度
intrightdepth=caculatetreedepth (root-rchild );
//求二叉树的高度
depth=leftDepth rightDepth? 左深度1 :右深度1;
返回深度;
}
计算二叉树的核心算法:首先输入,判断传来的引用是否为空,如果为空则直接返回,否则进入下一个执行。
定义了记录数量深度的变量。 首先求出左部分树的深度,使用递归记录左部分树的所有数量。 记录右部分的树也是同样的方法。
其次,为了使用三元运算符比较左部分树的总数和右部分树的总数,比较哪个更大,也计算根节点,进行加法运算。
//函数
void CresteBinaryTree (
{
//创建节点
binarynodenode1={‘a’,NULL,NULL };
binarynodenode2={‘b’,NULL,NULL };
binarynodenode3={‘c’,NULL,NULL };
binarynodenode4={‘d’,NULL,NULL };
binarynodenode5={‘e’,NULL,NULL };
binarynodenode6={‘f’,NULL,NULL };
binarynodenode7={‘g’,NULL,NULL };
binarynodenode8={‘h’,NULL,NULL };
//建立节点关系
node1.lchild=node2;
node1.rchild=node6;
node2.rchild=node3;
node3.lchild=node4;
node3.rchild=node5;
node6.rchild=node7;
node7.lchild=node8;
int depth=caculatetreedepth (node1); //调用二叉树计算深度算法
cout depth endl;
}
该函数用于新建二叉树,使用前面的构造体新建二叉树,调用计算二叉树深度的方法将取地址的二叉树的根节点作为参数传递。
定义变量depth,将算法返回的参数代入其中,输出该变量就是二叉树的深度。
主函数在这里直接调用函数
void main () )
{
调用//函数
CresteBinaryTree (;
}
输出结果为4,也就是二叉树的深度为4。