求二叉树的深度/求二叉树的节点数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lizhentao0707/article/details/80928165

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;
}
展开阅读全文

没有更多推荐了,返回首页