今天刷题遇到需要求树的深度的问题,发现代码居然如此简短,记录一下:
代码:
int TreeHeight(TreeNode* &treeNode)
{
if(treeNode) return 1+max(TreeHeight(treeNode->left),TreeHeight(treeNode->right));
return 0;
}
把代码展开一下:
int TreeHeight(TreeNode* &treeNode)
{
//判断是否为空节点
if(treeNode)
{//节点不为空
//
int leftHeight,rightHeight;
//递归的求左子树高度
leftHeight = TreeHeight(treeNode ->left);
//递归的求右子树高度
rightHeight = TreeHeight(treeNode ->right);
//返回左右子树高度较高的高度+1,即传入的结点的高度
if(leftHeight>rightHeight)
return leftHeight + 1;
else
return rightHeight + 1;
}
//结点为空,高度为0
else
return 0;
}
小结:
1、代码精简了也变得比较难搞懂
2、感觉太过精简的代码对程序员并不友好,毕竟不懂怎么下手