6、怎样从顶部开始逐层打印二叉树
2012-09-05 16:25
176 查看
/************************************************************************/ /* 6、怎样从顶部开始逐层打印二叉树 */ /************************************************************************/ //使用队列,队列中为未扩展元素,队列中最多存放两层元素 //层次遍历并放回树的高度 int levelTravese(BinaryNode* root) { if(!root) return 0; queue<BinaryNode*> bNodeQueue; bNodeQueue.push(root); //当前层次, 队列中当层次有的节点数 int level = 1; int levelNodes = 1; //下一层次,队列中下层次节点数 int nextLevel = level + 1; int nextLevelNodes = 0; while(!bNodeQueue.empty()) { //检查当前层是否还有节点 if(levelNodes == 0) { level++; levelNodes = nextLevelNodes; nextLevel++; nextLevelNodes = 0; } //当前层次出队列 BinaryNode* pTemp = bNodeQueue.front(); bNodeQueue.pop(); levelNodes--; cout <<level << ": " << pTemp->m_data << "\t"; //扩展下一层到队列 if(pTemp->m_left) { bNodeQueue.push(pTemp->m_left); nextLevelNodes++; } if(pTemp->m_right) { bNodeQueue.push(pTemp->m_right); nextLevelNodes++; } } return level; }
相关文章推荐
- 怎样从顶部开始逐层打印二叉树结点数据?
- 怎样从顶部开始逐层打印二叉树结点数据?蛋疼解法
- 微软等数据结构+算法面试100题(4)--怎样从顶部开始逐层打印二叉树结点数据?请编程
- 从顶部开始逐层打印二叉树结点数据
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 怎样按层次打印二叉树
- 题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的结点形成一条路径。
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径
- 给定一棵二叉树,每个结点包含一个值。打印出所有满足以下条件的路径: 路径上结点的值加起来等于给定的一个值。注意:这些路径不必从根结点开始。
- 从顶层开始逐层打印二叉树节点数据
- 给定一棵二叉树,每个结点包含一个值。打印出所有满足以下条件的路径: 路径上结点的值加起来等于给定的一个值。注意:这些路径不必从根结点开始。
- 从底层逐层的开始打印出二叉树的节点数据
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 如何从顶层开始逐层打印二叉树
- java 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 在二叉树中打印出从某个节点(r)开始和为定值(sum)的所有路径
- 时间复杂度O(n)空间复杂度O(1)打印二叉树前中后序
- 剑指offer 编程题(57):二叉树的之字形打印
- 剑指offer:按之字形顺序打印二叉树
- 剑指offer-面试题23.从上往下打印二叉树