码迷,mamicode.com
首页 > 其他好文 > 详细

第十八周 6.27 --- 7.3

时间:2016-06-27 15:25:49      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

新的一周>.<

6.27

leetcode 99 Recover Binary Search Tree

一颗二叉搜索树有两个节点的位置不对,让把这两个位置换回来

中序遍历的二叉搜索树是升序排列的,所以在中序遍历的时候,记录下这两个节点就好

技术分享
 1 class Solution{
 2 public:
 3     TreeNode* p1;
 4     TreeNode* p2;
 5     TreeNode* pre;
 6     void recoverTree(TreeNode* root){
 7         inorder(root);
 8         if(p1 != NULL && p2 != NULL){
 9             swap(p1->val,p2->val);
10         }
11     }
12 
13     void inorder(TreeNode* root){
14         if(root == NULL) return;
15         if(root->left != NULL) inorder(root->left);
16         if(pre != NULL && pre->val > root->val){
17             if(p1 == NULL){
18                 p1 = pre;
19                 p2 = root;
20             }
21             else p2 = root;
22         }
23         pre = root;
24         if(root->right != NULL) inorder(root->right);
25     }
26 };
View Code

 

第十八周 6.27 --- 7.3

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/5620148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!