二叉树系列---recover_binary_search_tree
来源:互联网 发布:2001年全明星赛数据 编辑:程序博客网 时间:2024/06/05 16:24
题
目
在一个二叉查找树中,有两个节点被错误的交换了,实现一个函数得出正确的二叉查找树;
思路
利用二叉查找树性质:中序遍历有序;
*先得到中序序列;
* 正向变量中序序列,遇到逆序的就break;
* 反向遍历中序序列,遇到逆序的就break;
* 交换两个break处的元素即可;
实现
public void recoverTree(TreeNode root){ ArrayList<TreeNode> list=new ArrayList<TreeNode>(); inOrder(list,root); TreeNode l=null,r=null; //正向变量 for(int i=0;i<list.size()-1;i++){ if(list.get(i).val>list.get(i+1).val){ l=list.get(i); break; } } //反向变量 for(int i=list.size()-1;i>=1;i--){ if(list.get(i).val<list.get(i-1).val){ r=list.get(i); break; } } //交换 int tmp=l.val; l.val=r.val; r.val=tmp; } private void inOrder(ArrayList<TreeNode> inOrderList, TreeNode root) { if(root==null){ return; } inOrder(inOrderList,root.left); inOrderList.add(root); inOrder(inOrderList,root.right); }
0 0
- 二叉树系列---recover_binary_search_tree
- 二叉树系列---基础
- 二叉树系列---symmetric_tree
- 二叉树系列
- 二叉树系列之一:二叉树
- 二叉树系列---构造二叉查找树
- 二叉树系列---层次遍历二叉树
- 二叉树系列问题1
- leetcode 二叉树系列搞定
- 【算法系列-4】二叉树
- 二叉树系列---path-sum
- 二叉树系列---same-tree
- 二叉树系列之二:二叉搜索树
- 二叉树系列文章之一 二叉树的性质
- 二叉树系列:初探二叉树,c语言实现
- 二叉树系列——二叉树的深度
- 二叉树系列——层序遍历二叉树
- 二叉树系列——二叉树的镜像
- 玲珑杯-【See car】
- libGDX的实体框架Ashley简介
- opencv实现图片动画效果
- HTML补充知识点
- HTML-基础语法
- 二叉树系列---recover_binary_search_tree
- python核心编程&序列
- Cocos2D-X学习6:在屏幕上显示图像
- Android ListFragment
- 即时消息(单聊功能)
- c++primer第十章泛型算法小结-10
- Bootstrap组件--下拉菜单
- HTML5新增的属性列表
- Linux 各种安装包