javascript数据结构与算法--二叉树遍历(先序)

先序遍历先访问根节点, 然后以同样方式访问左子树和右子树

代码如下:

  1. /*
  2. *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中
  3. *
  4. *
  5. * */
  6.  
  7. /*用来生成一个节点*/
  8. function Node(data, left, right) {
  9. this.data = data;//节点存储的数据
  10. this.left = left;
  11. this.right = right;
  12. this.show = show;
  13. }
  14.  
  15. function show() {
  16. return this.data;
  17. }
  18.  
  19. /*用来生成一个二叉树*/
  20. function BST() {
  21. this.root = null;
  22. this.insert = insert;
  23. }
  24.  
  25. /*将数据插入二叉树
  26. (1)设根节点为当前节点。
  27. (2)如果待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点;反
  28. 之,执行第4步。
  29. (3)如果当前节点的左节点为null,就将新的节点插入这个位置,退出循环;反之,继续
  30. 执行下一次循环。
  31. (4)设新的当前节点为原节点的右节点。
  32. (5)如果当前节点的右节点为null,就将新的节点插入这个位置,退出循环;反之,继续
  33. 执行下一次循环。
  34.  
  35. * */
  36. function insert(data) {
  37. var n = new Node(data, null, null);
  38. if (this.root == null) {
  39. this.root = n;
  40. }
  41. else {
  42. var current = this.root;
  43. var parent;
  44. while (true) {
  45. parent = current;
  46. if (data < current.data) {
  47. current = current.left;//待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点
  48. if (current == null) {//如果当前节点的左节点为null,就将新的节点插入这个位置,退出循环;反之,继续执行下一次while循环。
  49. parent.left = n;
  50. break;
  51. }
  52. }
  53. else {
  54. current = current.right;//待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点
  55. if (current == null) {
  56. parent.right = n;
  57. break;
  58. }
  59. }
  60. }
  61. }
  62. }
  63.  
  64. /*先序遍历
  65. *用递归的方法
  66. */
  67. function preOrder(node) {
  68. if (!(node == null)) {
  69. console.log(node.show() + " ");
  70. preOrder(node.left);
  71. preOrder(node.right);
  72. }
  73. }
  74.  
  75. /* 测试代码 */
  76. var nums = new BST();
  77. nums.insert(23);
  78. nums.insert(45);
  79. nums.insert(16);
  80. nums.insert(37);
  81. nums.insert(3);
  82. nums.insert(99);
  83. nums.insert(22);
  84. console.log("先序遍历: ");
  85. preOrder(nums.root);

javascript数据结构与算法--二叉树遍历(先序)的更多相关文章

  1. javascript数据结构与算法--二叉树遍历(后序)

    javascript数据结构与算法--二叉树遍历(后序) 后序遍历先访问叶子节点,从左子树到右子树,再到根节点. /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * * */ ...

  2. javascript数据结构与算法--二叉树遍历(中序)

    javascript数据结构与算法--二叉树遍历(中序) 中序遍历按照节点上的键值,以升序访问BST上的所有节点 代码如下: /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * ...

  3. javascript数据结构与算法-- 二叉树

    javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构.树是一种非线性的数据结构,以分成的方式存储数据,树被用来存储具有层级关系的数据,比如文件系统的文件,树还被用来存 ...

  4. javascript数据结构与算法---二叉树(删除节点)

    javascript数据结构与算法---二叉树(删除节点) function Node(data,left,right) { this.data = data; this.left = left; t ...

  5. javascript数据结构与算法---二叉树(查找最小值、最大值、给定值)

    javascript数据结构与算法---二叉树(查找最小值.最大值.给定值) function Node(data,left,right) { this.data = data; this.left ...

  6. javascript数据结构与算法--二叉树(插入节点、生成二叉树)

    javascript数据结构与算法-- 插入节点.生成二叉树 二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * ...

  7. 为什么我要放弃javaScript数据结构与算法(第八章)—— 树

    之前介绍了一些顺序数据结构,介绍的第一个非顺序数据结构是散列表.本章才会学习另一种非顺序数据结构--树,它对于存储需要快速寻找的数据非常有用. 本章内容 树的相关术语 创建树数据结构 树的遍历 添加和 ...

  8. JavaScript 数据结构与算法之美 - 非线性表中的树、堆是干嘛用的 ?其数据结构是怎样的 ?

    1. 前言 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手. 非线性表(树.堆),可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法 ...

  9. 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组

    第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...

随机推荐

  1. 设定Word段落的背景色

    段落背景不同于文字区别.很多新接触word的朋友都找不到怎么弄. 先把光标停留在需要设置的段落文字上,或者选择需要设置的段落文字. 点击段落里的边框和底纹,如图 在弹出框中选择底纹. 选择需要填充的颜 ...

  2. SPSS—非线性回归(模型表达式)案例解析

    非线性回归过程是用来建立因变量与一组自变量之间的非线性关系,它不像线性模型那样有众多的假设条件,可以在自变量和因变量之间建立任何形式的模型    非线性,能够通过变量转换成为线性模型——称之为本质线性 ...

  3. (KMP)Seek the Name, Seek the Fame -- poj --2752

    http://poj.org/problem?id=2752 Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536 ...

  4. Codeforces735B Urbanization 2016-12-13 11:58 114人阅读 评论(0) 收藏

    B. Urbanization time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  5. Java返回当前对象的好处

    自己使用了一个第三方框架,发现非常的灵活,于是去研究了下,才知道是返回当前对象,才可以做到,例如以下案例: // 可以不断的点出很多函数 Glide.with(PhotoPagerSlitherAct ...

  6. Microsoft SQL Server 2012 管理 (2): Auditing

    -- Demostratin 2A (Using SQL Server Audit) -- Step 1: Use the master database USE master; GO -- Step ...

  7. ASP.NET WEB API 返回JSON 出现2个双引号问题

    前言          在使用ASP.NET WEB API时,我想在某个方法返回JSON格式的数据,于是首先想到的就是手动构建JSON字符串,如:"{\"result\" ...

  8. Autofac创建实例的方法总结[转]

    1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure the component so tha ...

  9. (转)(WinForm)FormBorderStyle属性

    原地址

  10. C#通过盘符获取剩余空间

    public static long GetHardDiskSpace(string str_HardDiskName) { ; str_HardDiskName = str_HardDiskName ...