1 求二叉树的深度/高度
思路:
递归解法:
1 如果二叉树为空,则树的深度为0;(递归返回条件)
2 如果二叉树不为空,二叉树深度 =max{左子树节点个数+右子树节点的个数+1};
代码如下:
// 二叉树节点的数据结构
class treeNode
{
public:
int value;
treeNode *left;
treeNode *right;
};
// 求二叉树的深度/高度
int getTreeDepth(treeNode *root)
{
if (nullptr == root) // (1)树为空时,返回0;(2)递归返回条件;
return 0;
int leftSize = getTreeDepth(root->left);
int rightSize = getTreeDepth(root->right);
int ret = max(leftSize, rightSize) + 1;
return ret;
}
2 求二叉树的节点数
思路:
递归解法:
1 如果二叉树为空,节点的个数为0;(递归返回条件)
2 如果二叉树不为空,二叉树节点的个数 = 左子树节点个数+右子树节点的个数+1;
代码如下:
// 求二叉树的节点数
int getTreeNodeCount(treeNode *root)
{
if (nullptr == root)
return 0;
int leftCount = getTreeNodeCount(root->left);
int rightCount = getTreeNodeCount(root->right);
int ret = leftCount + rightCount + 1;
return ret;
}