void PrintNodeAtLevel(BiTree T,int level)
{
// 空树或层级不合理
if (NULL == T || level < 1 )
return;
if (1 == level)
{
cout << T->data << " ";
return;
}
// 左子树的 level - 1 级
PrintNodeAtLevel(T->leftChild, level - 1);
// 右子树的 level - 1 级
PrintNodeAtLevel(T->rightChild, level - 1);
}
void LevelTraverse(BiTree T)
{
if (NULL == T)
return;
int depth = Depth(T);
int i;
for (i = 1; i <= depth; i++)
{
PrintNodeAtLevel(T, i);
cout << endl;
}
}
其中求树的深度是
int maxDepth(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int depth;
if(root==NULL)return 0;
else{
depth=(maxDepth(root->left)>maxDepth(root->right)?
maxDepth(root->left):maxDepth(root->right))+1;
return depth;
}
}