二叉樹の深さを求めます./二叉樹のノード数を求めます.
963 ワード
1は二叉の木の深さ/高さを求めます.
考え方:
再帰的解法:
1 二叉の木が空なら、木の深さは0です.(再帰的条件)
2 二叉ツリーが空でない場合、二叉ツリーの深さ=max{左サブツリーノードの個数+右サブツリーノードの個数+1}
コードは以下の通りです
考え方:
再帰的解法:
1 二叉の木が空の場合、ノードの数は0です.(再帰的条件)
2 二叉ツリーが空でない場合、二叉ツリーノードの個数=左サブツリーノードの個数+右サブツリーノードの個数+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;
}