关于二叉树的定义,参考前面的文章。
二叉树节点的定义
typedef struct tnode
{
char data;
struct tnode *leftChild;
struct tnode *rightChild;
}BiTreeNode;
算法思想是比较简单的, 非常容易理解:
1)如果当前结点是空的,返回0;
2)递归部分:
a)当前结点的左子树非空,则递归求解左子树,那么二叉树的高度就是1+ 左子树的高度
b)当前结点的右子树非空,则递归求解右子树,那么二叉树的高度就是1+右左子树的高度
3)从左右子树中挑高者返回。
求解二叉树的高度, 递归代码如下:
int Get_tree_Level(BiTreeNode *root)
{
if (root == NULL) return 0; //递归出口
int left = 0, right = 0;
if (root->leftChild != NULL) left=1+Get_tree_Level(root->leftChild); //递归求解左子树的高度
if (root->rightChild != NULL) right=1+Get_tree_Level(root->rightChild);//递归求解右子树的高度
if (left >= right) return left; //取左右子树的高者
else return right;
}
本文介绍了一种通过递归算法计算二叉树高度的方法。当遇到空节点时返回0,否则递归计算左右子树的高度,并返回较高者加一。文章提供了完整的C语言代码实现。
3248

被折叠的 条评论
为什么被折叠?



