[LintCode]Insert Interval
来源:互联网 发布:淘宝内裤真人秀图片 编辑:程序博客网 时间:2024/04/28 04:45
[题目] : Given a binary search tree and a new tree node, insert the node into the tree. You should keep the tree still be a valid binary search tree.
Example
Given binary search tree as follow, after Insert node 6, the tree should be:
2 2 / \ / \1 4 --> 1 4 / / \ 3 3 6
方法一:基本递归算法
public class Solution { /** * @param root: The root of the binary search tree. * @param node: insert this node into the binary search tree * @return: The root of the new binary search tree. */ public TreeNode insertNode(TreeNode root, TreeNode node) { if(root == null || node == null) return root == null ? node : root; if(node.val > root.val && root.right == null) { root.right = node; }else if(node.val < root.val && root.left == null) { root.left = node; } if(node.val > root.val) { insertNode(root.right, node); } else if(node.val < root.val) { insertNode(root.left, node); } return root; }}
方法二: DFS
在当前root左孩子中找到第一个比node小的节点。如果当前位置为空,则当前为插入位置。不为空,则插入位置在当前节点的右孩子上.
public class Solution { /** * @param root: The root of the binary search tree. * @param node: insert this node into the binary search tree * @return: The root of the new binary search tree. */ public TreeNode insertNode(TreeNode root, TreeNode node) { if(root == null || node == null) return root == null ? node : root; TreeNode temp = root; TreeNode prev = null; while(true) { while(temp != null && temp.val > node.val) { prev = temp; temp = temp.left; } if(temp == null) { prev.left = node; return root; } if(temp.right == null) { temp.right = node; return root; } temp = temp.right; } }}
0 0
- [LintCode]Insert Interval
- LintCode 30:Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- 非常全面到位的介绍与源代码地址 :Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- webrtc学习之旅Getting Started
- Building Maintainable Software-java篇之Keep Architecture Components Balanced
- HttpUrlConnection缓存,仿微信朋友圈图片缓存效果
- UI界面与实现功能的交互
- [LintCode]Insert Interval
- 树链剖分--细节发现 BSOJ3690:Grass Planting种草
- 学习笔记5 Supervised Convolutional Neural Network 之 Stochastic Gradient Descent
- Codeforces Gym 100187 E. Two Labyrinths (双图BFS找共同最短路)
- 1644 免费馅饼 题解(c++)
- BGL_polyhedron_3/normals.cpp analysis
- nyoj 1036 非洲小孩
- 利用jquery插件jquery.form.js异步上传图片
- hdu2819Swap(二分匹配+巧妙地建图)