总结:
问题1:打印二叉树第k层的所有结点,成功return 1;失败return 0;
问题2:分层遍历binary tree,每层单独打印成一行。
利用二叉树本身定义的递归性。
问题1:要求访问二叉树第k层的结点,利用递归性,转换成,访问以此二叉树根节点的左右子结点为根的两颗子树中的k-1层的结点。
// 输入root为根的level层所有结点(从左到右)
// 成功返回1,失败返回0
// param
// root为二叉树根
// level为层次数,其实根结点为第0层
int printNodeAtLevel(Node* root, int level)
{
if (!root || level < 0)
return 0;
if (level == 0)
{
cout << root->data << " ";
return 1;
}
return printNodeAtLevel(root->left, k-1) + printNodeAtLevel(root->right, k-1);
}
问题2:
void printLevel(Node* root)
{
int depth = getDepth(root); // 得到树高
for (int level = 0; level < depth; ++level)
{
printNodeAtLevel(root, level);
cout << endl;
}
}
未完。。。待续。。。