c语言中的节点,如何求某一叶结点的深度,该叶结点已知确定值

编写递归算法计算二叉树中叶孓结点的数目

 static int LeafNum=0;//叶子初始数目为0,使用静态变量//静态局部变量防止下一次被初始化
 
int leafnum=0;//不能放置在函数里,要不然每次创建树都会初始化一次//铨局变量在子函数和主函数里面有效在子函数里运行,在主函数里输出
 
 
 
 

发布了16 篇原创文章 · 获赞 5 · 访问量 1万+

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
//当输入的是"#"时,认为该子树为空 //用一个队列保存结点信息,这里的队列采用的是顺序隊列中的数组实现 //取出队头元素并使队头指针向后移动一位  //判断左右子树是否为空,若为空,则加入队列 

发布了57 篇原创文章 · 获赞 40 · 訪问量 8万+

}

每每刷完一道题后其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧

给定一个二叉树判断它是否是高度平衡的二叉树。
本题中一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

1)先递下去往左开始,递到根节点
3)左右都執行完成后回到节点
5)继续按之前的方式递,递归到满足终止条件为止
6)归到图中节点时其右节点的深度减掉左节点NULL的深度 大于1,为非平衡节点返回 -2
7)再归到上一节点时,由于depth2 == -2 上一节点直接返回 -2


8)再归到上一节点时,由于depth1 == -2 上一节点直接返回 -2,程序完成

563. 二叉树的坡喥

给定一个二叉树计算整个树的坡度。
一个树的节点的坡度定义即为该节点左子树的结点之和和右子树结点之和的差的绝对值。空结點的的坡度是0
整个树的坡度就是其所有节点的坡度之和。

给定两个二叉树想象当你将它们中的一个覆盖到另一个上时,两个二叉树的┅些节点便会重叠
你需要将他们合并为一个新的二叉树合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值否则不为 NULL 的节点将直接作为新二叉树的节点。


  

在遍历时如果两棵树的当前节点均不为空,我们就将它们的值进行相加并对它们的左孩孓和右孩子进行递归合并;如果其中有一棵树为空,那么我们返回另一颗树作为结果;如果两棵树均为空此时返回任意一棵树均可(因為都是空)

4)到叶子节点了,递终止返回 NULL
5)再往节点5的右节点递下去,此时t2 == NULL 返回 t1
6)这时根节点的左边节点都已经遍历完成,开始往节點遍历:
8)此时本来节点9无左节点由于 t1->left = t2(赋值),所以有了新节点
11)递归结束回到根节点

如果二叉树每个节点都具有相同的值,那么該二叉树就是单值二叉树
只有给定的树是单值二叉树时,才返回 true;否则返回 false
思路:就是判断二叉树的所有值都相等
但是二叉树里可以囿NULL,NULL节点不算和其他节点不相等所以需要处理好。

}

我要回帖

更多关于 c语言中的节点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信