从底层逐层的开始打印出二叉树的节点数据
2012-08-01 14:25
302 查看
从底层逐层开始打印出二叉树的节点数据
思路: 利用队列 和 栈 来实现,
首先利用队列实现从顶层开始逐层的打印出二叉树节点数据
具体的方法如下:
从顶层开始逐层打印二叉树节点数据
10
/ \
6 14
/ \ / \
4 8 12 16
逐层打印的结果为 10 6 14 4 8 12 16
采用队列的方式 ,先把根节点存入队列,然后再出列,输出这个数据。如果有左子树,把左子树根节点入列,如果右子树不为空,把右子树的根节点入列,然后如果队列不为空,则出列。直到队列为空。
逐层打印出来的 为 10 6 14 4 8 12 16 如果想要从底层输出那么
就把这个数组,逐个的输入到栈里面,10 6 14 4 8 12 16 这样从栈里面输出为 16 12 8 4 14 6 10
void print(TreeNode * root)
{
queue<TreeNode> qtree; //声明一个树节点的队列
stack<TreeNode> stree; //声明一个树节点的栈
TreeNode tmp = NULL;
tree.push(root); //首先把根节点入列
// 把二叉树的所有节点都从顶层开始逐层的输入到队列,逐个弹出,并把每个的弹出都逐个的压入到栈里面
while( ! qtree.empty())
{
tmp = qtree.front();
qtree.pop();
stree.push(tmp); //把每个弹出的数据压入到栈里面 此时站里面为 10 , 6 , 14 , 4 , 8, 12 ,16 。最后需要逐个的弹出可以实现,
if(tmp->left != NULL)
{
qtree.push(tmp->left);
}
if(tmp->right != NULL)
{
qtree.push(tmp->right);
}
}
while( !stree.empty() )
{
tmp = stree.front();
stree.pop();
cout<<tmp->data<<endl;
}
}
思路: 利用队列 和 栈 来实现,
首先利用队列实现从顶层开始逐层的打印出二叉树节点数据
具体的方法如下:
从顶层开始逐层打印二叉树节点数据
10
/ \
6 14
/ \ / \
4 8 12 16
逐层打印的结果为 10 6 14 4 8 12 16
采用队列的方式 ,先把根节点存入队列,然后再出列,输出这个数据。如果有左子树,把左子树根节点入列,如果右子树不为空,把右子树的根节点入列,然后如果队列不为空,则出列。直到队列为空。
逐层打印出来的 为 10 6 14 4 8 12 16 如果想要从底层输出那么
就把这个数组,逐个的输入到栈里面,10 6 14 4 8 12 16 这样从栈里面输出为 16 12 8 4 14 6 10
void print(TreeNode * root)
{
queue<TreeNode> qtree; //声明一个树节点的队列
stack<TreeNode> stree; //声明一个树节点的栈
TreeNode tmp = NULL;
tree.push(root); //首先把根节点入列
// 把二叉树的所有节点都从顶层开始逐层的输入到队列,逐个弹出,并把每个的弹出都逐个的压入到栈里面
while( ! qtree.empty())
{
tmp = qtree.front();
qtree.pop();
stree.push(tmp); //把每个弹出的数据压入到栈里面 此时站里面为 10 , 6 , 14 , 4 , 8, 12 ,16 。最后需要逐个的弹出可以实现,
if(tmp->left != NULL)
{
qtree.push(tmp->left);
}
if(tmp->right != NULL)
{
qtree.push(tmp->right);
}
}
while( !stree.empty() )
{
tmp = stree.front();
stree.pop();
cout<<tmp->data<<endl;
}
}
相关文章推荐
- 从顶层开始逐层打印二叉树节点数据
- 逐层打印二叉树节点数据
- 怎样从顶部开始逐层打印二叉树结点数据?蛋疼解法
- 怎样从顶部开始逐层打印二叉树结点数据?
- 从顶部开始逐层打印二叉树结点数据
- 数据结构复习之二叉树:遍历、搜索节点&路径、查找、与单链表互转、逐层打印
- 微软等数据结构+算法面试100题(4)--怎样从顶部开始逐层打印二叉树结点数据?请编程
- 题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的结点形成一条路径。
- 在二叉树中打印出从某个节点(r)开始和为定值(sum)的所有路径
- 按之字形打印二叉树的节点【两个栈实现】
- (树的层序遍历)从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- 剑指offer 从上往下打印出二叉树的每个节点
- 剑指offer-07-从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- 【数据结构与算法】求二叉树中两个节点的最近祖先
- 【二叉树】分层遍历二叉树和打印二叉树第k层节点
- 二叉树(9)----打印二叉树中第K层的第M个节点,非递归算法
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数
- java算法(一)二叉树逐层遍历打印(分层换行)
- 节点数据打印的格式控制问题
- 面试题之对称的二叉树,层序遍历(每层节点打印成一行),平衡二叉树的判断