LeetCode之Recover Binary Search Tree
来源:互联网 发布:齐鲁石化网络电视台 编辑:程序博客网 时间:2024/05/01 13:54
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ /*采用Morris遍历的方法,用以确定两个被打乱的地方。 参考自:https://github.com/soulmachine/leetcode*/class Solution {public: void recoverTree(TreeNode* root) { //if(root == nullptr || (root->left == nullptr && root->right == nullptr)) // return; TreeNode *first(nullptr), *second(nullptr); TreeNode *pre(nullptr), *cur(root); while(cur != nullptr){ if(cur->left == nullptr){//无左子树,访问该节点 detect(&first, &second, pre, cur); pre = cur; cur = cur->right; } else{//找到左子树最右的叶子节点,并将它作为当前节点前驱 TreeNode *p = cur->left; while(p->right != nullptr && p->right != cur) p = p->right; if(p->right == nullptr){//构造线索 p->right = cur; cur = cur->left; } else{//对它进行访问 detect(&first, &second, pre, cur); p->right = nullptr; pre = cur; cur = cur->right; } } } swap(first->val, second->val); } void detect(TreeNode **first, TreeNode **second, TreeNode *pre, TreeNode *cur){ if(pre != nullptr && pre->val > cur->val){ if(*first == nullptr) *first = pre; *second = cur; } }};
0 0
- LeetCode 之 Recover Binary Search Tree
- leetcode之Recover Binary Search Tree
- leetcode 之 Recover Binary Search Tree
- LeetCode之Recover Binary Search Tree
- python:leetcode之Recover Binary Search Tree
- LeetCode: Recover Binary Search Tree
- LeetCode: Recover Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [leetcode] recover binary search tree
- LeetCode -- Recover Binary Search Tree
- [LeetCode]Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- LeetCode:Recover Binary Search Tree
- [Leetcode]Recover Binary Search Tree
- Leetcode: Recover Binary Search Tree
- LeetCode-Recover Binary Search Tree
- SpringMVC 集成JSR303数据校验
- 栈的顺序存储实现
- HDU 1874--畅通工程续【最短路 && floyd && 水题】
- [ACM] hdu 2717 Catch That Cow (BFS)
- Get Luffy Out (poj 2723 二分+2-SAT)
- LeetCode之Recover Binary Search Tree
- OC之集合家族
- machine learning in coding(python):拼接原始数据;生成高次特征
- [ACM] hdu 1035 Robot Motion (模拟或DFS)
- c++学习笔记
- POJ 2750 Potted Flower(线段树 + DP)
- No package 'theoraenc' found gstreamer
- Maven私服搭建
- 抛硬币的模拟