分层遍历二叉树

void printTopDown(BinaryTree* root)

{

deque<BinaryTree> dequeB;

deque.push_back(root);

while(!deque.empty())

{

BinaryTree*p=deque.front();

cout<<p->value<<endl;

if(p->left)

dequeB.push_back(p->left);

if(p->right)

dequeB.push_back(p->right);

}

}

时间: 2024-08-09 09:25:32

分层遍历二叉树的相关文章

分层遍历二叉树算法

分层遍历二叉树的集中情况 从上而下的打印 vector<vector<int>> printLevel(TreeNode *root) {          vector<vector<int>>  ret;     if(root == NULL) return ret;          queue<TreeNode *> q;     int size;     q.push_back(root);     while(!q.empty()

编程之美-分层遍历二叉树

问题:给定一个二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号.那么分层遍历如图的二叉树,正确的输出应该为: <span style="font-size:14px;">1 2 3 4 5 6 7 8</span> 书中还给出了问题2:打印二叉树中的某层次的节点(从左到右),其中根结点为第0层,成功返回true,失败返回false 分析与解法 关于二叉树的问题,由于其本身固有的

3.10 分层遍历二叉树

题目1:写一个函数,打印二叉树中某层次的节点(从左到右),其中根节点为第0层. 思路:利用递归算法,思想是:要求访问二叉树中第k层的节点,那么其实就是要访问"以该二叉树根节点的左右子节点为根节点的两颗子树"中层次为k-1的节点 代码: struct pNode { int data; pNode *lChild; pNode *rChild; }; int printNodeAtLevel(pNode *root, int level) { if(root == NULL || lev

【编程之美】3.10分层遍历二叉树

主要难度在于何时插入换行 学习到的:①vector 可以像数组一样用 不一定要用迭代器 代码及注释如下: #include<iostream> #include<queue> using namespace std; typedef struct BiTree { BiTree * pLeft, * pRight; int data; }BiTree; void createBiTree(BiTree * &T) { int d; cout << "p

网易:层次遍历二叉树

题目描述 分层遍历二叉树 用java实现树结构,分层遍历二叉树.给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层单独输出一行),每一层要求访问的顺序为从左到右,再按照相同规则从下至上遍历一遍,树节点定义如下 class Node { int data; Node left; Node right; } 输入描述 图: __1__ / __2__ 3__ / \ 4 __5__ 6 7 8 上面的输入为:1, 2, 3, 4, 5, 0, 6, 0, 0, 7, 8注:

二叉树分层遍历

首先定义二叉树的存储结构: 1 struct TreeNode { 2 int val; 3 TreeNode *left; 4 TreeNode *right; 5 6 TreeNode(int v, TreeNode* l = NULL, TreeNode *r = NULL) 7 :val(v), left(l), right(r) {} 8 }; 1.递归的方法(<编程之美>3.10) 二叉树本身就带有递归属性,通常我们可以用递归方法解决.假设要访问第k层节点,那么其实可以转皇城分别访

JAVA递归、非递归遍历二叉树(转)

原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { private char date; private BinTree lchild; private BinTree rchild; public BinTree(char c) { date = c; } // 先序遍历递归 public static void preOrder(BinTree t) {

非递归实现遍历二叉树

非递归实现二叉树主要利用queue和stack的特点,对于层次遍历二叉树主要运用queue队头出,队尾插入,先进先出的特点,先将根插入队尾,然后输出队头的元素,同时将队头的左子树和右子树元素插入队尾,依次输出输出队头的元素,同时将队头的左子树和右子树元素插入队尾,直到队列为空. void levelorder() { queue<BinaryTreeNode<T> *>s; if (_root == NULL) return; s.push(_root); while (!s.em

递归遍历二叉树

递归遍历分三种: 1.前序遍历二叉树(二叉树非空) 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 2.中序遍历二叉树(二叉树非空) 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 3.后序遍历二叉树(二叉树非空) 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点 三种递归的算法遍历,终止条件是二叉树为空的时候. 记忆的方法呢,前中后,都是以根节点命名的,前序,先访问根节点,中序,根节点在第二,后序,根节点最后进行访问.