博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript数据结构与算法---二叉树(查找最小值、最大值、给定值)
阅读量:6068 次
发布时间:2019-06-20

本文共 2910 字,大约阅读时间需要 9 分钟。

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

function Node(data,left,right) {    this.data = data;    this.left = left;    this.right = right;    this.show = show;}function show() {    return this.data;}function BST() {    this.root = null;    this.insert = insert;    this.preOrder = preOrder;    this.inOrder = inOrder;    this.postOrder = postOrder;    this.getMin = getMin;//查找最小值    this.getMax = getMax;//查找最大值    this.find = find;//查找给定值}function insert(data) {    var n = new Node(data,null,null);    if(this.root == null) {        this.root = n;    }else {        var current = this.root;        var parent;        while(current) {            parent = current;            if(data <  current.data) {                current = current.left;                if(current == null) {                    parent.left = n;                    break;                }            }else {                current = current.right;                if(current == null) {                    parent.right = n;                    break;                }            }        }    }}// 中序遍历function inOrder(node) {    if(!(node == null)) {        inOrder(node.left);        console.log(node.show());        inOrder(node.right);    }}// 先序遍历function preOrder(node) {    if(!(node == null)) {        console.log(node.show());        preOrder(node.left);        preOrder(node.right);    }}// 后序遍历function postOrder(node) {    if(!(node == null)) {        postOrder(node.left);        postOrder(node.right);        console.log("后序遍历"+node.show());    }}/**查找BST上的最小值*因为较小的值总是在左子节点上,在BST上查找最小值,只需要遍历左子树,直到找到最后一个节点。*/function getMin(){    var current = this.root;    while(!(current.left == null)) {        current = current.left;    }//    return current;//返回最小值所在的节点    return current.data;//返回最小值}/* *查找BST上的最大值 *因为较大的值总是在右子节点上,在BST上查找最大值,只需要遍历右子树,直到找到最后一个节点。*/function getMax() {    var current = this.root;    while(!(current.right == null)) {        current = current.right;    }//    return current;//返回最大值所在的节点    return current.data;//返回最大值}/**查找给定值*在BST上查找给定值,需要比较该值和当前节点上的值的大小。*通过比较,就能确定如果给定值不在当前节点时,该向左遍历还是向右遍历。*/function find(data) {    var current = this.root;    while(current != null) {        if(current.data == data) {            return current;        }else if(data < current.data) {            current = current.left;        }else {            current = current.right;        }    }    return null;}var nums = new BST();nums.insert(23);nums.insert(45);nums.insert(16);nums.insert(37);nums.insert(3);nums.insert(99);nums.insert(22);var min = nums.getMin();console.log("最小值为: " + min);var max = nums.getMax();console.log("最大值为: " + max);var find = nums.find("88");console.log( find);if(find != null){    console.log("给定值为: " + find.data);    console.log("给定值为: " + find.show());}var find = nums.find("37");console.log( find);if(find != null){    console.log("给定值为: " + find.data);    console.log("给定值为: " + find.show());}

 

转载地址:http://lmygx.baihongyu.com/

你可能感兴趣的文章
JVM自动内存管理机制
查看>>
loj2542「PKUWC2018」随机游走
查看>>
bzoj2564集合的面积
查看>>
Vue搭建后台项目
查看>>
app启动过程
查看>>
docker的四种网络模式
查看>>
MVC,MVP 和 MVVM 的图示
查看>>
localStorage
查看>>
etherlime-3-Etherlime Library API-Deployed Contract Wrapper
查看>>
docker swarm英文文档学习-8-在集群中部署服务
查看>>
毕业生是怎么一步步给培训班骗去学编程的
查看>>
java泛型中<?>和<T>有什么区别?
查看>>
oracle 12c使用问题总结
查看>>
冒泡排序
查看>>
Linux系统概要
查看>>
玩转树莓派 - 添加定时任务
查看>>
iphone-common-codes-ccteam源代码 CCLanguage.h
查看>>
基于WDF的PCI/PCIe接口卡Windows驱动程序(5)-如何为硬件移植驱动程序
查看>>
团队工作第四次推进之——软件设计规格说明书
查看>>
RepositoryBase文件解析
查看>>