二叉树的节点格式如下:
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
1.求二叉树的节点个数
这道题比较简单,使用随便一种遍历方式,在遍历的途中将节点个数记录下来即可,但是这样要声明一个静态变量去记录节点个数。为了简便,用递归的方式来实现:
int Count(binaryTreeNode* t)
{
if (t == NULL)
return 0;
return 1 + Count(t->m_pLeft) + Count(t->m_pRight);
}
2.求二叉树的深度
二叉树的深度应该为左右子树中深度的最大值,因此我们就可以用递归的方法去求二叉树的深度。
代码如下:
int TreeDeep(binaryTreeNode* t)
{
if (t == NULL)return 0;
int left = TreeDeep(t->m_pLeft) + 1, right = TreeDeep(t->m_pRight)+1;
return left > right ? left : right;
}