1110. Complete Binary Tree (25)[完全二叉树]
来源:互联网 发布:人工智能产业园区规划 编辑:程序博客网 时间:2024/06/05 09:26
1. 原题:https://www.patest.cn/contests/pat-a-practise/1110
2. 思路:
题意:完全二叉树题。判断一棵树是否CBT。
思路:
完全二叉树的特点:叶子结点只能在最后出现,不能夹在非叶子结点间。
直接用层序遍历好了。
利用队列进行bfs(广度搜索),当遍历到结点是-1(表示空),则已遍历的结点数
应该为N,则是CBT。
最后一个结点遍历的时候更新即可。
思路:
完全二叉树的特点:叶子结点只能在最后出现,不能夹在非叶子结点间。
直接用层序遍历好了。
利用队列进行bfs(广度搜索),当遍历到结点是-1(表示空),则已遍历的结点数
应该为N,则是CBT。
最后一个结点遍历的时候更新即可。
已AC。
3. 源码:
#include <iostream>#include <vector>#include <queue>#include <string>using namespace std;struct Node//存储结点信息{int m_left, m_right;};int main(){//freopen("in.txt", "r", stdin);int N;cin >> N;vector<Node> v(N);//存储二叉树结点vector<int> child(N, 0);//用了判断根for (int i = 0; i < N; i++){string a, b;//注意,不能用char,数字可能大于9.cin >> a >> b;if (a == "-"){v[i].m_left = -1;}else{sscanf(a.c_str(), "%d", &v[i].m_left);//字符串转数字child[v[i].m_left] = 1;}if (b == "-"){v[i].m_right = -1;//表示子结点空}else{sscanf(b.c_str(), "%d", &v[i].m_right);child[v[i].m_right] = 1;}}int root;for (int i = 0; i < N; i++)//找到根结点{if (child[i] == 0){root = i;break;}}queue<int> Q;Q.push(root);int cnt = 0;int lastNode;while (!Q.empty()){int curNode = Q.front();//遍历的当前结点Q.pop();if (curNode != -1){cnt++;lastNode = curNode;//更新最后一个结点Q.push(v[curNode].m_left);Q.push(v[curNode].m_right);}else{if (cnt == N){cout << "YES " << lastNode << endl;break;}else{cout << "NO " << root << endl;break;}}}return 0;}
阅读全文
0 0
- 1110. Complete Binary Tree (25)[完全二叉树]
- 1110. Complete Binary Tree (25) <完全二叉树>
- 1110. Complete Binary Tree (25)完全二叉树
- 完全二叉树(Complete Binary Tree)
- 1110. Complete Binary Tree (判断完全二叉树)
- pat甲1110. Complete Binary Tree(完全二叉树)
- 1110. Complete Binary Tree (25) 完全二叉树、树的遍历
- 1110. Complete Binary Tree (25) -- 完全二叉树相关性质, 求树根两种方法
- PAT-1064 Complete Binary Search Tree(完全二叉树)
- 满二叉树(Full Binary Tree)&&完全二叉树(Complete Binary Tree)
- 用二叉链表实现完全二叉树 (Linked Complete Binary Tree) 的实现(一)
- 用二叉链表实现完全二叉树 (Linked Complete Binary Tree) 的实现(二)
- 04-树6 Complete Binary Search Tree 完全二叉搜索树
- pat(A) 1064. Complete Binary Search Tree(完全二叉树的中序建树)
- pat 甲1064. Complete Binary Search Tree (完全二叉搜索树)
- PAT 1064. Complete Binary Search Tree (30) 快速建立完全二叉树
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- angular2实例
- 检查iptables服务状态,关闭将会自动开启
- 自定义Toast(悬浮窗口)
- 从printf谈可变参数函数的实现[转载]
- 多源最短路径--floyd算法
- 1110. Complete Binary Tree (25)[完全二叉树]
- STL algorithm
- POJ3111-K Best
- 奇偶剪枝
- 数据库SQL语句查询及多表查询
- java web项目发布到linux服务器上运行出现乱码
- HashMap的内部实现机制
- Git和Github简单教程
- NodeMCU文档中文翻译 6 MQTT模块