二叉树的查找javascript

现在谈谈在二叉树中进行查找。对二叉查找树来说,一般有以下三类查找:最大值,最小值和给定值。

查找最小值就是遍历左子树,直到找到最后一个结点,这是因为在二叉查找树中较小的值总是在左子节点上的。

代码如下:

function getMin(){//查找最小值
		var current=this.root;//指向根节点
		while(current.left!=null){
			current=current.left;
		}
		return current.data;
	}

同理可得查找最大值的代码如下:

	function getMax(){//查找最大值
		var current=this.root;
		while(current.right!=null){//如果未找到右结点则一直找
			current=current.right;
		}
		return current.data;
	}

而在二叉查找树中查找指定值也不难,就是依次判断节点值的查找值的大小,如果节点值小,则继续往右查找,如果节点值大,则继续往左查找,代码如下:

function find(data){//查找某个值
		var current=this.root;
		while(current!=null){
			if(current.data==data){
				return current;
			}else if(current.data>data){//如果节点值比寻找值大,则往左找
				current=current.left;
			}else{//如果节点值比寻找值小,则往右找
				current=current.right;
			}
		}//如果没找到则返回null
		return null;
	}
时间: 2024-10-07 10:55:19

二叉树的查找javascript的相关文章

LeetCode-在受污染的二叉树中查找元素

在受污染的二叉树中查找元素 LeetCode-1261 /** * 给出一个满足下述规则的二叉树: * root.val == 0 * 如果 treeNode.val == x 且?treeNode.left != null,那么?treeNode.left.val == 2 * x + 1 * 如果 treeNode.val == x 且 treeNode.right != null,那么?treeNode.right.val == 2 * x + 2 * 现在这个二叉树受到「污染」,所有的?

谷歌 Chrome Dev Tools查找JavaScript

1.使用Ctrl+Shift+F, 打开查找窗口, 查找支持正则表达式: 2.查找函数定义:Ctrl + Shift + o 3.查找文件: Ctrl + o 4.. 实时修改 JavaScript代码 页面外链JavaScript文件在 Script Panel中可以直接修改,改完后Ctrl + s 保存, 会立即生效,但是不支持 Html 页面中 JavaScript 修改,经过 Pretty print 格式化的JavaScript也不支持实时修改. 5. 自建Script文件 在Cons

二叉树的删除javascript

从二叉查找树上删除节点的操作复杂程度取决于删除哪个节点.如果删除没有子节点的节点就非常简单,如果节点只有一个子节点,不管是左子节点还是右子节点,就变得稍微有点复杂,如果节点包含两个子节点就最复杂. 如果待删除节点是叶子节点,那么只需要将从父节点指向它的链接指向null. 如果待删除节点只包含一个子节点,那么原本指向它的节点就得使其指向它的子节点. 如果待删除节点包含两个子节点,那么我们可以采用两种方式,一种是查找待删除节点左子树上的最大值,一种是查找待删除节点右节点上的最小值.我们采取后者,找到

顺序查找javascript

对于查找数据来说,最简单的方法就是从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果.这个方法叫做顺序查找,有时候也被叫做线性查找.它属于暴力查找技巧的一种. 顺序查找实现起来非常简单,代码如下: function generalSearch(arr,data){//普通的顺序查找,就是遍历一遍看是否找到 for(var i=0;i<arr.length;i++){ if(arr[i]==data){ return true; } } return false; } 那么这样会不

微软算法100题04 二叉树中查找和为某值的所有路径

4.在二元树中找出和为某一值的所有路径题目:输入一个整数和一棵二元树.从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径.打印出和与输入整数相等的所有路径.例如输入整数22 和如下二元树10/ \5 12/ \4 7则打印出两条路径:10, 12 和10, 5, 7 思路: 递归 为了记录路径 需要采用一个辅助数据结构记录正确路径上的节点 这里采用list 1. 从根节点开始 将根节点放入List 将总额sum减去根节点的值 如果等于零 说明找到正确路径上的节点 则打印list 2

二叉树的遍历javascript

三种遍历的代码: function inOrder(node){//中序遍历 if(node!=null){ inOrder(node.left); document.write(node.show()+" "); inOrder(node.right); } } function preOrder(node){//先序遍历 if(node!=null){ document.write(node.show()+" "); preOrder(node.left); p

12.在二叉树中查找值为x的结点,打印值为x的结点的所有祖先,假设值为x的结点不多于一个

bool ancestor(Bitree bt,Elemtype x) { if(bt==NULL) //递归出口 return false; else if(bt->lchild!=NULL&&bt->rchild->data==x||bt->rchild->data==x&&bt->lchild!=NULL) { //结点的左孩子或者右孩子的data为x printf("%c",bt->data); retu

java递归方法建立搜索二叉树,具备查找关键字,插入新节点功能

二叉排序树的定义: 二叉排序树满足以下三个性质(BST性质): <1>若它的左子树非空,则左子树上所有节点的值均小于根节点的值 <2>若它的右子树非空,则右子树上所有节点的值均大于根节点的值 <3>左,右子树本身又各是一棵二叉排序树 根据二叉排序树的BST性质,可以说二叉排序树每个节点上的值(或称关键字)都是唯一的,并且二叉排序树以中序遍历输出的结果必然是一个有序的递增序列. 如下图所示: 用递归方法建立二叉排序树,减少了繁复的比较程序,效率较高.只需要知道每个节点的值

二叉树查找

二叉树中查找算法: JAVA代码: /** * @author hbliu * @param data * @return 找到的结点 */ public Node searchNode(int data){ return searchNode(this.root,data); } /** * @author hbliu * @param node * @param data * @return * 功 能:二叉树中查找数据元素 */ private Node searchNode(Node n