二叉樹の深さを求めます./二叉樹のノード数を求めます.

963 ワード

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;
}