层次遍历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;
	}
}

未完。。。待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值