层次遍历binary tree

总结:

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

未完。。。待续。。。;