题目来源:http://www.lintcode.com/zh-cn/problem/insert-node-in-a-binary-search-tree/

C++版 VS2012测试通过:

 1 //#include <iostream>
 2 //#include <vector>
 3 //#include <queue>
 4 //#include <algorithm>
 5 //using namespace std;
 6 //
 7 //class TreeNode {
 8 //public:
 9 //    int val;
10 //    TreeNode *left, *right;
11 //    TreeNode(int val=-1) {
12 //    this->val = val;
13 //    this->left = this->right = NULL;
14 //  }
15 //};
16
17 //以前序遍历创建二叉树
18 //输入21##43###
19 //void CreateBiTree(TreeNode **T)//*T是指向BiTNode的指针
20 //{
21 //    *T=new TreeNode;
22 //    if(*T==NULL)//如果*T还是指向NULL,表示内存分配失败,退出程序
23 //        exit(OVERFLOW);
24 //    char ch;
25 //    cin>>ch;
26 //    if(ch=='#')
27 //        *T=NULL;
28 //    else
29 //    {
30 //        (*T)->val=ch-'0';//*T指向的节点的data分配内容,即生成根节点
31 //        CreateBiTree(&((*T)->left));//创建&(*T)->lchild临时变量,传入CreateBiTree,构造左子树
32 //        CreateBiTree(&((*T)->right));//创建&(*T)->rchild临时变量,传入CreateBiTree,构造右子树
33 //    }
34 //}
35
36 class Solution {
37 public:
38     /**
39      * @param root: The root of the binary search tree.
40      * @param node: insert this node into the binary search tree
41      * @return: The root of the new binary search tree.
42      */
43     TreeNode* insertNode(TreeNode* root, TreeNode* node) {
44         // write your code here
45       if (root == NULL) {
46       return node;
47         }
48         if (node->val < root->val) {
49             root->left = insertNode(root->left, node);
50             return root;
51         }
52         root->right = insertNode(root->right, node);
53         return root;
54     }
55 };
56
57 //测试
58 //int main()
59 //{
60 //    Solution s;
61 //    TreeNode **pp;//定义指向BiTNode的二级指针pp
62 //    TreeNode *p;//定义指向BiTNode的指针p
63 //    pp=&p;//pp指向p
64 //    p=NULL;//初始化p指向NULL
65 //    CreateBiTree(pp);//传入指向p的地址,创建二叉树
66
67 //    TreeNode *n=new TreeNode;//定义指向BiTNode的指针n作为插入的节点
68 //    n->val=6;
69 //    TreeNode *r;
70 //    r=s.insertNode(*pp,n);//插入结点n
71
72 //    //检查插入是否正确,这里的测试方法有点傻...
73 //    cout<<r->val;//输出根节点值
74 //    cout<<endl;
75 //    cout<<r->left->val;//输出左子数值
76 //    cout<<endl;
77 //    cout<<r->right->val<<" "<<r->right->left->val<<" "<<r->right->right->val;//输出右子数值
78 //    cout<<endl;
79 //}

Python2.7版 spider测试通过:

 1 #class TreeNode:
 2 #    def __init__(self,val,left,right):
 3 #        self.val=val
 4 #        self.left=left
 5 #        self.right=right
 6
 7 class Solution:
 8     """
 9     @param root: The root of the binary search tree.
10     @param node: insert this node into the binary search tree.
11     @return: The root of the new binary search tree.
12     """
13     def insertNode(self, root, node):
14         if root is None:
15             return node
16
17         curt = root
18         while curt != node:
19             if node.val < curt.val:
20                 if curt.left is None:
21                     curt.left = node
22                 curt = curt.left
23             else:
24                 if curt.right is None:
25                     curt.right = node
26                 curt = curt.right
27         return root
28
29 #测试
30 #if __name__=='__main__':
31 #    s=Solution()
32 #    node3=TreeNode(3,None,None)
33 #    node1=TreeNode(1,None,None)
34 #    node4=TreeNode(4,node3,None)
35 #    root=TreeNode(2,node1,node4)
36 #    node6=TreeNode(6,None,None)
37 #    newroot=s.insertNode(root,node6)
38 #    print node4.right.val#输出6 

转载于:https://www.cnblogs.com/hslzju/p/5631572.html

[容易]在二叉查找树中插入节点相关推荐

  1. Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树、二叉查找树的插入节点、二叉查找树的删除、二叉树的遍历、平衡二叉树)C 语言实现

    Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树.二叉查找树的插入节点.二叉查找树的删除.二叉树的遍历.平衡二叉树)C++语言实现 目录 树的基础知识 1.二叉树的遍-前序 ...

  2. 双链表中插入节点(C语言实现)

    文章目录 1. 相关背景介绍 1.1 双链表概念 1.2 双链表的优势与劣势 1.3 双链表插入节点的位置 2. 不同位置插入数据 2.1 在DLL的前端添加节点 2.2 在给定节点之前添加节点 2. ...

  3. vue中向html插入节点标签(简单易懂)

    正常vue中插入节点会报这个错: 原因:插入的不是节点,而是一个字符串,需要将这个字符串变为对象才能插入到HTML中 简单几步: 1.创建新节点 2.将新节点替换要插入的标签(innerHTML方法) ...

  4. JQueryDOM之插入节点

    插入节点 本篇文章主要介绍在jQuery中插入节点的几种常用方法: 插入子节点: append() 向每个匹配的元素内部追加内容 appendTo()将所有匹配的元素追加到指定的元素中.       ...

  5. 【 C 】在单链表中插入一个新节点的尝试(二)

    在上篇博文中:[ C ]在单链表中插入一个新节点的尝试(一),我们最后提到了如果向单链表的开头(起始位置)插入一个节点,上篇博文中给出的程序显然完成不了这任务. 这篇博文中,我们将解决这个问题,给出一 ...

  6. 【 C 】在单链表中插入一个新节点的尝试(一)

    根据<C和指针>中讲解链表的知识,记录最终写一个在单链表中插入一个新节点的函数的过程,这个分析过程十分的有趣,准备了两篇博文,用于记录这个过程. 链表是以结构体和指针为基础的,所以结构体和 ...

  7. php中append,插入节点append()、insertAfter()的特殊用法:对原有DOM元素进行移动

    插入节点的方法: append()/appendTo().prepend()/prependTo().after()/insertAfter().before/insertBefore() 这些插入节 ...

  8. 11 二叉查找树中搜索区间

    原题网址:https://www.lintcode.com/zh-cn/problem/search-range-in-binary-search-tree/# 给定两个值 k1 和 k2(k1 &l ...

  9. 查找算法【二叉查找树】 - 二叉查找树的插入

    查找算法[二叉查找树] - 二叉查找树的插入 因为二叉查找树的中序遍历存在有序性,所以首先要查找待插入关键字的插入位置,当查找不成功时,再将待插入关键字作为新的叶子节点成为最后一个查找节点的左孩子或右 ...

最新文章

  1. 使用Nginx-rtmp-module搭建hls直播
  2. 数学建模学习笔记——时间序列分析
  3. 一级计算机word试题及答案,计算机一级考试试题及答案Word文档..doc
  4. 卸载 系统打印服务器,win10系统打印机驱动卸载不掉的方案介绍
  5. protect 继承_(转)public、protect、private继承方式 C++
  6. LeetCode 2012. 数组美丽值求和
  7. C++:new分配内存
  8. 前端:JS/17/前篇总结(JS程序的基本语法,变量),数据类型-变量的类型(数值型,字符型,布尔型,未定义型,空型),数据类型转换,typeof()判断数据类型,从字符串提取整数或浮点数的函数
  9. 【管理】如何有效管理自己的时间
  10. ppt格式刷快捷键_为什么别人PPT做的比你快?因为你没掌握这些!
  11. CISA:警惕俄罗斯 “Sandworm” 黑客组织使用的新型恶意软件框架
  12. php curl登录,php curl保存登录信息 模拟登录
  13. c# 执行程序 未捕获的异常 处理;软件闪退 处理方式 工程启动不报错,执行程序报错
  14. mrtg监控短信报警 linux,[原]使用MRTG画图进行监控
  15. 【自我解析】2020年华为杯数学建模比赛E题
  16. 酷睿i9 12900HX性能怎么样 i912900hx相当于桌面什么cpu
  17. C#:TopK:1万个数取前最大的100,堆排序
  18. 程序员一般都如何接私活,我也想接,有什么可行的方法吗?
  19. 李宏毅2021春季机器学习课程视频笔记1:Introduction, Colab PyTorch Tutorials, HW1
  20. 快手小店通效果好吗?

热门文章

  1. 韩企全球首造72层3D NAND芯片 下半年或量产
  2. 关于asp.net会话阻塞
  3. The Coding Kata: FizzBuzzWhizz in Modern C++11
  4. 【SAP HANA】关于SAP HANA中带层次结构的Analytic View创建、激活状况下在系统中生成对象的研究...
  5. Word2010使用技巧之四:页眉的另类使用
  6. mysql 标记_Mysql操作基础,标记一上
  7. python使用rabbitmq阻塞_python – Celery/RabbitMQ unacked消息阻塞队列?
  8. Oracle 查询练习及答案
  9. Linux之防火墙开通端口
  10. emacs 替换模式_如何使用Emacs Org模式撰写博客