Inorder Successor in BST
2016-06-14 00:30
429 查看
好吧,自己一开始给写反了,写成前置点了。。。
后继点,即第一个比node大的点。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
if (root == null) {
return null;
}
TreeNode succMax = null;
TreeNode node = root;
while (node != null) {
if (node.val == p.val) {
if(node.right == null) {
return succMax;
} else {
node = node.right;
}
} else if (node.val > p.val) {
succMax = node;
node = node.left;
} else {
node = node.right;
}
}
return succMax;
}
// public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
// if (root == null) {
// return null;
// }
// TreeNode prevMin = null;
// TreeNode node = root;
// while (node != null) {
// if (node.val == p.val) {
// if(node.left == null) {
// return prevMin;
// } else {
// node = node.left;
// }
// } else if (node.val < p.val) {
// prevMin = node;
// node = node.right;
// } else {
// node = node.left;
// }
// }
// return prevMin;
// }
}
后继点,即第一个比node大的点。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
if (root == null) {
return null;
}
TreeNode succMax = null;
TreeNode node = root;
while (node != null) {
if (node.val == p.val) {
if(node.right == null) {
return succMax;
} else {
node = node.right;
}
} else if (node.val > p.val) {
succMax = node;
node = node.left;
} else {
node = node.right;
}
}
return succMax;
}
// public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
// if (root == null) {
// return null;
// }
// TreeNode prevMin = null;
// TreeNode node = root;
// while (node != null) {
// if (node.val == p.val) {
// if(node.left == null) {
// return prevMin;
// } else {
// node = node.left;
// }
// } else if (node.val < p.val) {
// prevMin = node;
// node = node.right;
// } else {
// node = node.left;
// }
// }
// return prevMin;
// }
}
相关文章推荐
- 使用git创建ssh后,在github上new ssh后,本地进行克隆总是拒绝访问
- c/c++优先级队列(priority_queue)
- 从一个简单的Java单例示例谈谈并发 JMM JUC
- Rsync结合Inotify 实时同步
- RxJava的使用
- 通过rsync+inotify-tools+ssh实现触发式远程实时同步
- bzoj4551【TJOI2016&HEOI2016】树
- Android Studio使用技巧---良心推荐的实用功能
- Android图片缓存技术---软引用、LruCache
- 如何实现分布式锁?
- NetBeans 启动时出现 Invalid jdkhome specified提示
- 抓取淘宝商品价格人气-http://hws.m.taobao.com/cache/wdetail/5.0
- 生活感悟-2016.06.14
- Linux启动/停止/重启Mysql数据库的方法
- 排序__js
- PrograssBar的setIndeterminateDrawable不起作用
- Android APP编程单元测试实例详解(附源码)
- linux下ftp连接:530 Permission denied
- 《将博客搬至CSDN》
- 一些简单的编程练习题