编程之美。分层遍历二叉树(使用队列)
来源:互联网 发布:智能电话软件 编辑:程序博客网 时间:2024/05/22 06:19
层次遍历二叉树用队列是非常适合的,若需要打印出第n层的节点数据,只需要在队列中加入一个标记来分层(我使用的是NULL)
#include<iostream>
#include<queue>
using namespace std;
#include<queue>
using namespace std;
struct Node
{
int t;
Node *left, *right;
Node(int t, Node * l = NULL, Node * r = NULL)
{
this->t = t;
left = l;
right = r;
}
Node()
{
left = NULL;
right = NULL;
}
};
{
int t;
Node *left, *right;
Node(int t, Node * l = NULL, Node * r = NULL)
{
this->t = t;
left = l;
right = r;
}
Node()
{
left = NULL;
right = NULL;
}
};
int PrintNodeAtLevel(Node* root, int level)
{
int res = 0;
queue<Node*> qu;
Node* p;
qu.push(root);
qu.push(NULL);
int l = 0;//层数
while (!qu.empty())
{
p = qu.front();
qu.pop();
if (p == NULL && !qu.empty())
{
l++;
qu.push(NULL);
}
else if (p != NULL)
{
if (l == level)
{
cout << p->t;
res = 1;
}
if (p->left != NULL)
qu.push(p->left);
if (p->right != NULL)
qu.push(p->right);
}
}
cout << endl;
return res;
}
int main()
{
Node* t7 = new Node(7);
Node* t8 = new Node(8);
Node* t5 = new Node(5, t7, t8);
Node* t4 = new Node(4);
Node* t2 = new Node(2, t4, t5);
Node* t6 = new Node(6);
Node* t3 = new Node(3,NULL,t6);
Node* t1 = new Node(1, t2, t3);
{
int res = 0;
queue<Node*> qu;
Node* p;
qu.push(root);
qu.push(NULL);
int l = 0;//层数
while (!qu.empty())
{
p = qu.front();
qu.pop();
if (p == NULL && !qu.empty())
{
l++;
qu.push(NULL);
}
else if (p != NULL)
{
if (l == level)
{
cout << p->t;
res = 1;
}
if (p->left != NULL)
qu.push(p->left);
if (p->right != NULL)
qu.push(p->right);
}
}
cout << endl;
return res;
}
int main()
{
Node* t7 = new Node(7);
Node* t8 = new Node(8);
Node* t5 = new Node(5, t7, t8);
Node* t4 = new Node(4);
Node* t2 = new Node(2, t4, t5);
Node* t6 = new Node(6);
Node* t3 = new Node(3,NULL,t6);
Node* t1 = new Node(1, t2, t3);
cout << PrintNodeAtLevel(t1, 4);
}
}
0 0
- 编程之美。分层遍历二叉树(使用队列)
- 编程之美:分层遍历二叉树
- 编程之美---分层遍历二叉树
- 分层遍历二叉树-编程之美
- 编程之美-----分层遍历二叉树
- [编程之美]分层遍历二叉树
- [编程之美] 分层遍历二叉树
- 编程之美--分层遍历二叉树
- 编程之美-分层遍历二叉树
- 编程之美 - 分层遍历二叉树
- 分层遍历二叉树(编程之美)
- 读书笔记之编程之美 - 3.10 分层遍历二叉树
- 编程之美系列之二叉树的分层遍历
- 编程之美读书笔记_3.10 分层遍历二叉树
- 编程之美读书笔记_3.10 分层遍历二叉树
- 编程之美读书笔记3:3.10分层遍历二叉树
- 编程之美读书笔记 分层遍历二叉树
- 《编程之美》 3.10 分层遍历二叉树
- POJ 2289Jamie's Contact Groups 二分图多重匹配
- MySQL之——服务器调优思路
- Add Digits
- C语言scanf学习笔记
- 安卓(android)崩溃日志的抓取
- 编程之美。分层遍历二叉树(使用队列)
- JavaScript学习笔记
- mybatis参数映射
- Spring 使用注解方式进行事务管理
- 非信任机构的https证书,afnetworking 报错解决办法
- 字典转模型时,字典包含字典
- HDU 5692 Snacks(线段树)
- Java进阶之动态代理
- oracle中数据前后空格的函数