Medium 285题 Inorder Successor in BST
来源:互联网 发布:搞笑淘宝买家秀图评论 编辑:程序博客网 时间:2024/06/08 15:03
Question:
Given a binary search tree and a node in it, find the in-order successor of that node in the BST.
Solution:
分两种情况讨论,参考了https://segmentfault.com/a/1190000003792039,存下所有路径
/** * 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) { Stack<TreeNode> st=new Stack<TreeNode>(); while(p!=root){ st.push(root); if(root.val>p.val) root=root.left; else root=root.right; } if(p.right!=null) return FindMostLeft(p.right); else{ return Find(p,st); } } public TreeNode FindMostLeft(TreeNode node) { while(node.left!=null) node=node.left; return node; } public TreeNode Find(TreeNode p, Stack<TreeNode> st){ while(!st.isEmpty()&&st.peek().val<p.val) st.pop(); if(st.isEmpty()) return null; else return st.peek(); }}
对。。根本不用分类讨论
if (root == null || p == null) return null; TreeNode res=null; while(root!=null){ if(root.val<=p.val) root=root.right; else{ res=root; root=root.left; } } return res;
递归求
if(root==null) return null; if(root.val<=p.val) return inorderSuccessor(root.right,p); else { TreeNode left=inorderSuccessor(root.left,p); return left==null?root:left; }
这个方法也可以求前面那个节点~改一下就好
public TreeNode predecessor(TreeNode root, TreeNode p) { if (root == null) return null; if (root.val >= p.val) { return predecessor(root.left, p); } else { TreeNode right = predecessor(root.right, p); return (right != null) ? right : root; }}
0 0
- Medium 285题 Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in BST
- Leetcode 285. Inorder Successor in BST (Medium) (cpp)
- [刷题]Inorder Successor in BST
- **LeetCode-Inorder Successor in BST
- [LeetCode285]Inorder Successor in BST
- [leetcode]Inorder Successor in BST
- leetcode Inorder Successor in BST
- [LeetCode]Inorder Successor in BST
- 285. Inorder Successor in BST
- 285. Inorder Successor in BST
- 1st round, 285 Inorder Successor in BST
- LeetCode 题解(266) : Inorder Successor in BST
- Leetcode - 285.Inorder Successor in BST
- Swift 3.0 加载storyboard中文件并跳转
- jsp实现分页的步骤及代码
- listFileInput.py
- Lombok 安装、入门 - 消除冗长的 java 代码
- 深度神经网络编程细节
- Medium 285题 Inorder Successor in BST
- 2016互联网+设备管理与维修技术高峰论坛在山东省日照市顺利召开
- [RK3288][Android6.0] USB UVC 协议简结
- SQL查询大小及空间占用情况
- yum install ncurses-devel
- 退出Python命令行
- 抽象类和接口
- 利用css绘制三条横线的菜单图标
- DB2数据库