输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11。
分析:其实就是树的广度遍历,可使用队列,按层入栈
代码如下:
void widthvisit(TreeNode * root)
{
deque dp<TreeNode *>=new <TreeNode *>();
TreeNode *temp;
dp.push(root);
while(!dp.Isempty())
{
temp=dp.pop();
visit(temp); //输出,可自定义访问方法
if(temp->left) dp.push(temp->left);
if(temp->right) dp.push(temp->right);
//把父节点出队列头的同时把子节点如队列尾
}
}