剑指offer - 从上往下遍历二叉树

二叉树结点定义如下:

struct  BinaryTreeNode{
	int  value;
	BinaryTreeNode *pLeft;
	BinaryTreeNode *pRight;
};

分析:按层打印的顺序决定了我们应该先打印根节点,之后为了打印根节点的左右结点,我们需要把这两个子结点保存到一个queue的容器中。之后读取左结点,把它打印出来后,若它包含孩子结点,则还是按照顺序将它的孩子结点保存到队列的末尾。最后到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印为止。


代码实现:

void printFromTopToBottom( BInaryTreeNode *root){ 
	if( !root ) 
		return; 
	std::queue<BinaryTreeNode *> dequeTreeNode; 
	dequeTreeNode.push_back(root); 
	while( dequeTreeNode.size() ){ 
		BinaryTreeNode *Node = dequeTreeNode.front(); 
		dequeTreeNode.pop_front(); 
		printf("%d", Node->value ); 
		if( Node->pLeft ) 
			dequeTreeNode.push_back( Node->pLeft ); 
		if( Node->pRight ) 
			dequeTreeNode.push_back( Node->pRight ); 
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值