【刷题之路】寻找错误结点
2016-05-31 21:28
190 查看
一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请找到这两个错误节点并返回他们的值。保证二叉树中结点的值各不相同。
给定一棵树的根结点,请返回两个调换了位置的值,其中小的值在前。
二叉搜索树按照中序遍历应该是一个升序数组,如果有错位节点,包括两种情况
情况1:1 5 3 4 2 ,其中共有两次降序数字对,分别为5 3与4 2,只要取第一对的较大数字与第二对的较小数字即可
情况2:1 2 4 3 5,其中只有一对降序数字,则直接返回即可。
class FindErrorNode {
public:
vector<int> findError(TreeNode* root) {
// write code here
vector<int> temp;
vector<int> res;
midtree(root,temp);
int p1,p2;
int i,j;
for(i=0;i<temp.size()-1;i++){
if(temp[i]>temp[i+1]){ //出现第一对降序数字对,存下来
p1=temp[i];
p2=temp[i+1];
for(j=i+1;j<temp.size()-1;j++){ //在之后寻找第二对降序数字对,更新第二个数为第二对中较小的数字
if(temp[j]>temp[j+1]){
p2=temp[j+1];
}
}
break; //跳出循环
}
}
res.push_back(p2); //p2小于p1
res.push_back(p1);
return res;
}
void midtree(TreeNode* root,vector<int> &res){ //递归法中序遍历二叉树
if(root==NULL) return;
midtree(root->left,res);
res.push_back(root->val);
midtree(root->right,res);
}
};
给定一棵树的根结点,请返回两个调换了位置的值,其中小的值在前。
二叉搜索树按照中序遍历应该是一个升序数组,如果有错位节点,包括两种情况
情况1:1 5 3 4 2 ,其中共有两次降序数字对,分别为5 3与4 2,只要取第一对的较大数字与第二对的较小数字即可
情况2:1 2 4 3 5,其中只有一对降序数字,则直接返回即可。
class FindErrorNode {
public:
vector<int> findError(TreeNode* root) {
// write code here
vector<int> temp;
vector<int> res;
midtree(root,temp);
int p1,p2;
int i,j;
for(i=0;i<temp.size()-1;i++){
if(temp[i]>temp[i+1]){ //出现第一对降序数字对,存下来
p1=temp[i];
p2=temp[i+1];
for(j=i+1;j<temp.size()-1;j++){ //在之后寻找第二对降序数字对,更新第二个数为第二对中较小的数字
if(temp[j]>temp[j+1]){
p2=temp[j+1];
}
}
break; //跳出循环
}
}
res.push_back(p2); //p2小于p1
res.push_back(p1);
return res;
}
void midtree(TreeNode* root,vector<int> &res){ //递归法中序遍历二叉树
if(root==NULL) return;
midtree(root->left,res);
res.push_back(root->val);
midtree(root->right,res);
}
};
相关文章推荐
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- AVL树-自平衡二叉查找树(Java实现)
- 本人即将筹备败家日志,敬请期待!
- IE:使用搜索助手
- C语言二叉树的非递归遍历实例分析
- C++深度优先搜索的实现方法
- 使用C语言构建基本的二叉树数据结构
- 一波二叉树遍历问题的C++解答实例分享
- 举例讲解C语言程序中对二叉树数据结构的各种遍历方式
- C++非递归队列实现二叉树的广度优先遍历
- 基于文本的搜索
- php实现搜索一维数组元素并删除二维数组对应元素的方法
- 使用Sphinx对索引进行搜索
- PHP实现的线索二叉树及二叉树遍历方法详解
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- asp 多关键词搜索的简单实现方法
- C#使用foreach语句搜索数组元素的方法
- WordPress中用于获取搜索表单的PHP函数使用解析
- JavaScript中数组的排序、乱序和搜索实现代码
- jquery ztree实现树的搜索功能