【题目】从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如:打印结果:8,6,10,5,7,9,11。【分析】二叉树遍历方式:前序,中序,后序,还有一种广度优先遍历,在对图遍历时涉及到,而二叉树可以看作退化的图,从例子中可以看出,打印顺序是按层决定的,观察发现,打印完根节点之后,然后打印其左右节点,再继续打印左节点的左右孩子和右结点的左右孩子,由此可以发现,如果将其结点的左右孩...
分类:
其他好文 时间:
2015-06-25 12:27:23
阅读次数:
88
不多说,直接贴程序,如下所示# -*- coding: utf-8 -*-# 定义二叉树节点类class TreeNode(object): def __init__(self,data=0,left=0,right=0): self.data = data sel...
分类:
编程语言 时间:
2015-06-14 00:29:17
阅读次数:
293
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
va...
分类:
其他好文 时间:
2015-06-07 09:31:59
阅读次数:
208
垂直打印给定的一棵二叉树。下面的例子演示了垂直遍历的顺序。
1
/ 2 3
/ \ / 4 5 6 7
\ 8 9
对这棵树的垂直遍历结果为:
4
2
1 5 6
3 8
7
9
在二叉树系列中,已经讨论过了一种O(n...
分类:
其他好文 时间:
2015-06-06 00:31:13
阅读次数:
135
这道题目难度一般,重要的是想到以队列作为辅助来解决。 分析:因为按层打印的顺序决定了先打印的应该为根结点。为了接下来能够打印值为 8 的结点的两个子结点,应该在遍历到该结点时把值为 6 和 10 的两个结点保存到一个容器里,此时容器中含有 6 和 10 两个结点。按照从左到右的要求,先取出值为 6 的结点。打印出值 6 之后分别把 5 和 7 两个左右子结点放入容器 ,此时容器中的结点有三个...
分类:
其他好文 时间:
2015-05-23 14:20:56
阅读次数:
165
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
c...
分类:
其他好文 时间:
2015-05-22 22:42:01
阅读次数:
133
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图中的二叉树,则依次打印出8、6、10、5、7、9、11。
二叉树结点定义如下:
struct BinaryTreeNode{
int m_nValue;
BinaryTreeNode *m_pLeft;
BinaryTreeNode *m_pRight;
};
思路:
每一次打印一个结点的时候...
分类:
其他好文 时间:
2015-05-17 12:15:03
阅读次数:
82
题目:
问题一:
给定一颗二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。那么分层遍历如图3-17中的二叉树,正确输出应为:
1,
2,3
4,5,6
7,8
问题二:
写另外一个函数,打印二叉树中的某层次的节点(从左到右),其中根节点为第0层,函数原型为int...
分类:
其他好文 时间:
2015-05-08 09:43:16
阅读次数:
153
题目1:写一个函数,打印二叉树中某层次的节点(从左到右),其中根节点为第0层。
思路:利用递归算法,思想是:要求访问二叉树中第k层的节点,那么其实就是要访问“以该二叉树根节点的左右子节点为根节点的两颗子树”中层次为k-1的节点
代码:
struct pNode {
int data;
pNode *lChild;
pNode *rChild;
};
int ...
分类:
其他好文 时间:
2015-05-07 14:40:05
阅读次数:
146
#include
#include
using namespace std;
struct Node
{
char value;
Node *left;
Node *right;
};
void create(Node *&T)
{
char c;
cin>>c;
if('#'==c)
{
T=NULL;
}
else
{
T=new Node;
T->value=...
分类:
其他好文 时间:
2015-04-28 11:48:03
阅读次数:
113