输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
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
); //把父节点出队列头的同时把子节点如队列尾
}
}