关于二叉树的定义,参考前面的文章。
二叉树节点的定义
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;
}