重构二叉树
来源:互联网 发布:氰化钠 淘宝 编辑:程序博客网 时间:2024/06/05 07:57
重构二叉树算法流程
表格分析
算法代码
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};struct TreeNode* ReconstruBTree(vector<int> preTree, vector<int> midTree){ if (preTree.size() == 0 || midTree.size() == 0){ return nullptr; } int leftcnt =0,rightcnt= 0,rootIndex=0; int rootValue = preTree[0]; int treecnt = preTree.size(); bool bFindRoot = false; for (int i = 0; i < midTree.size();i++) { if (rootValue == midTree[i]) { bFindRoot = true; rootIndex = i; break; } leftcnt++; } if (!bFindRoot){ return nullptr;} rightcnt = treecnt - leftcnt - 1; vector<int>preleftTree; vector<int>prerightTree; vector<int>midleftTree; vector<int>midrightTree; for (int i = 0; i < midTree.size(); i++) { if (i<rootIndex) { midleftTree.push_back(midTree[i]); } else if (i>rootIndex){ midrightTree.push_back(midTree[i]); } } for (int i = 0; i < preTree.size(); i++) { if (i>0 && i <= leftcnt) { preleftTree.push_back(preTree[i]); } else if (i > leftcnt) { prerightTree.push_back(preTree[i]); } } TreeNode* rootTree = new TreeNode(rootValue); TreeNode* lNode = ReconstruBTree(preleftTree, midleftTree); TreeNode* rNode = ReconstruBTree(prerightTree, midrightTree); rootTree->left = lNode; rootTree->right = rNode; return rootTree; }
阅读全文
0 0
- 重构二叉树
- 重构二叉树
- 二叉树 重构
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 3.重构二叉树
- 重构二叉树&&判断二叉树的子结构
- 根据二叉树遍历的结果重构二叉树
- ACM 重构二叉树 C++实现
- class类的静态和动态加载
- LeetCode 617. Merge Two Binary Trees (Easy)
- js分几部分
- 【PAT】【Advanced Level】1110. Complete Binary Tree (25)
- 1005 number number number
- 重构二叉树
- jquery+bootstrap 实现简单备忘录(一)
- (noip 2013 华容道)<搜索>
- map大梗概
- Redis 和 Memcached 的区别
- linux 2.6升级Python2.7 ./configure 报错问题
- Spark算子讲解(一)
- 1008 transaction transaction transaction
- 将Sublime Text 3添加到右键菜单中