Verify Preorder Serialization of a Binary Tree
来源:互联网 发布:手机版文章页源码 编辑:程序博客网 时间:2024/05/01 11:34
给的字符串是二叉树dfs搜了一遍的结果,也就是先序遍历的结果。当出现叶节点时,就会出现两个"#",因为叶节点没有子节点。此时可以将该叶节点消除,即用一个"#"代替,一层层向上归并消除直至根节点,最终只剩一个"#"。由于字符串操作不方便,所以转化成vector<int>,vector中的0代表'#',1代表有value。
class Solution {public:bool isValidSerialization(string preorder) {vector<int> vec;for (auto i = 0; i < preorder.size(); i++){if (preorder[i] == '#'&&preorder[i] != ',')vec.push_back(0);if (preorder[i] != '#'&&preorder[i] != ',')vec.push_back(1);if (preorder[i] != ','){while (preorder[i + 1] != ','&&i +1< preorder.size())i++;}}if (vec.size() == 1&&vec[0]==0)return true;if (vec.size() == 1&&vec[0]==1)return false;if (vec.size() == 2)return false;vector<char> res;for (auto i = 0; i < vec.size(); i++){res.push_back(vec[i]);check(res);}if (res.size() == 1 && res[0] == 0)return true;elsereturn false;}void check(vector<char> & input){if (input.size() >= 3){if (input.back() == 0&&*(input.end() - 2) == 0&&*(input.end() - 3) !=0){input.erase(input.end() - 1);input.erase(input.end() - 1);input.erase(input.end() - 1);input.push_back(0);check(input);}}}};
0 0
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- Verify Preorder Serialization of a Binary Tree
- leetcode Verify Preorder Serialization of a Binary Tree
- 331. Verify Preorder Serialization of a Binary Tree
- Leetcode: Verify Preorder Serialization of a Binary Tree
- LeetCode Verify Preorder Serialization of a Binary Tree
- leetcode 331. Verify Preorder Serialization of a Binary Tree
- [LeetCode]331. Verify Preorder Serialization of a Binary Tree
- 331. Verify Preorder Serialization of a Binary Tree
- [leetcode] Verify Preorder Serialization of a Binary Tree
- c++中,class C:public A,B和class C:public A,public B有什么区别
- 数据结构实验之二叉树四:还原二叉树
- 常用的排序算法(一)
- 作为一名基层管理者如何利用情商管理自己和团队
- redis配置和使用
- Verify Preorder Serialization of a Binary Tree
- 利用内容提供者获取联系人信息
- redis支持集群
- toLocaleString() toString() valueOf()三种方法在数组上的区别运用
- session支持集群
- 访问Oracle em https https://localhost:1158/em 报访问网页提示此网站的安全证书有问题解决方法
- 运行sql文件报错
- JMeter中常用的一些函数
- java位运算,流程控制语句