LintCode(85)在二叉查找树中插入节点
来源:互联网 发布:淘宝网怎么绑定信用卡 编辑:程序博客网 时间:2024/06/05 07:25
题目
在二叉查找树中插入节点
给定一棵二叉查找树和一个新的树节点,将节点插入到树中。
你需要保证该树仍然是一棵二叉查找树。
样例
给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的:
2 2 / \ / \1 4 --> 1 4 / / \ 3 3 6
分析
递归和非递归两种方法实现。
Python代码
"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None"""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. """ def insertNode1(self, root, node): # write your code here if root is None: root = node return root if node.val < root.val: root.left = self.insertNode1(root.left, node) else: root.right = self.insertNode1(root.left, node) return root def insertNode(self, root, node): # write your code here if root is None: root = node return root t = root while t is not None: if node.val < t.val: if t.left is None: t.left = node return root else: t = t.left continue else: if t.right is None: t.right = node return root else: t = t.right continue return root
GitHub -- Python代码
C++代码
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */class Solution {public: /** * @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. */ TreeNode* insertNode1(TreeNode* root, TreeNode* node) { // write your code here if(root == NULL) { root = node; return root; }//if if(node->val < root->val) { if(root->left == NULL) { root->left = node; }else{ root->left = insertNode1(root->left, node); }//else }else{ if(root->right == NULL) { root->right = node; }else{ root->right = insertNode1(root->right, node); }//else }//else return root; } //非递归 TreeNode* insertNode(TreeNode* root, TreeNode* node) { // write your code here if(root == NULL) { root = node; return root; }//if TreeNode *t = root; while(t != NULL) { if(node->val < t->val) { if(t->left == NULL) { t->left = node; return root; }else{ t = t->left;; continue; }//else }//if else{ if(t->right == NULL) { t->right = node; return root; }else{ t = t->right; continue; }//else }//else }//while return root; }};
GitHub -- C++代码
1 0
- LintCode(85)在二叉查找树中插入节点
- lintcode-在二叉查找树中插入节点-85
- LintCode 85-在二叉查找树中插入节点
- LintCode:在二叉查找树中插入节点
- lintcode ----在二叉查找树中插入节点
- 【lintcode笔记】在二叉查找树中插入节点
- lintcode——在二叉查找树中插入节点
- LintCode-在二叉查找树中插入节点
- lintcode 在二叉查找树中插入节点
- LintCode 在二叉查找树中插入节点
- 在二叉查找树中插入节点-LintCode
- LintCode 在二叉查找树中插入节点
- 在二叉查找树中插入节点-LintCode
- LintCode 85. 在二叉查找树中插入节点
- lintcode 85 在二叉树中插入节点
- LintCode Insert a Node in a Binary Search Tree 在二叉查找树中插入节点
- lintcode insert-node-in-a-binary-search-tree 在二叉查找树中插入节点
- LintCode(S)二叉查找树插入节点
- Serialize and Deserialize Binary Tree
- 重载函数 数组
- 类
- 个人代码托管和版本控制
- LeetCode:First Missing Positive
- LintCode(85)在二叉查找树中插入节点
- mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】
- Java语言编写矩阵转置
- ORB特征原理(浅显易懂)
- 用Qt编写的windows平台关机程序(附源代码)
- Glide全解析
- java memcachedClient 存储有效期方法,切记
- 复杂运维场景下,如何实现分钟级的故障根因定位
- C#中的委托