<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>二叉树
</title>
<style>
html,body
{
width:100%;
height:100%;
background:grey;
padding:0;
margin:0;
}
#myDiv
{
width:100%;
height:200px;
background:lightblue;
}
#myDiv2
{
width:100%;
height:200px;
background:pink;
}
</style>
</head>
<body>
<div id="myDiv">排序二叉树:
</div>
<div id="myDiv2">链表:
</div>
<script>
/*---------------------------------------二叉树对象----------------------------------------------------*/
var BinaryTree=function()
{
var Node=function(key)
{
this.key=key;
this.left=null;
this.right=null;
}
var rootNode=null;
/*树添加节点*/
this.insert=function(key)
{
var newNode=new Node(key);
if(rootNode===null){
rootNode=newNode;
}else{
insertNode(rootNode,newNode);
}
}
/*中序遍历树的节点*/
this.look=function(fun)
{
lookNode(rootNode,fun);
}
/*树添加节点的具体实现方法*/
function insertNode(node,newNode)/*(父节点,子节点)*/
{
if(newNode.key<node.key)
{
if(node.left===null)
{
node.left=newNode;
}
else
{
insertNode(node.left,newNode);
}
}
else
{
if(node.right===null)
{
node.right=newNode;
}
else
{
insertNode(node.right,newNode);
}
}
}
/*中序遍历树的节点的具体实现方法*/
function lookNode(node,fun)
{
if(node!==null)
{
lookNode(node.left,fun);
fun(node.key,data1);
lookNode(node.right,fun);
}
}
}
/*-----------------------------------------------链表------------------------------------------------*/
var LinkTable=function()
{
var Node2=function(key)
{
this.num=key;
this.next=null;
}
var head=null;
/*在链表中添加数据*/
this.insert=function(key)
{
var newNode2=new Node2(key);
if(head===null)
{
head=newNode2;
}else
{
insertNode(head,newNode2);/*头节点,下一个节点*/
}
}
/*显示链表中数据*/
this.display=function(fun)
{
displayNode(fun,head);
}
/*在链表中添加数据的实现*/
function insertNode(node,newNode)
{
if(node.next===null)
{
node.next=newNode;
}
else
{
insertNode(node.next,newNode);
}
}
function displayNode(fun,node)
{ if(node!==null)
{
fun(node.num,data2);
}
if(node.next!==null)
{
displayNode(fun,node.next);
}
}
}
/*---------------------------------------------main----------------------------------------------------*/
var div=document.getElementById("myDiv");
var div2=document.getElementById("myDiv2");
var data1=new Array();
var data2=new Array();
/*存储遍历结果的方法*/
var callback=function(key,array)
{
array.push(key);
}
var tree=new BinaryTree();
var linkTable=new LinkTable();
var num=[6,9,5,8,3,1,7,4,2];
/*插入数据*/
num.forEach(function(key){
tree.insert(key);
linkTable.insert(key);
});
/*输出遍历结果*/
tree.look(callback);
linkTable.display(callback);
for(var i=0;i<data1.length;i++)
{
div.innerHTML=div.innerHTML+data1[i]+" ";
div2.innerHTML=div2.innerHTML+data2[i]+" ";
}
</script>
</body>
</html>
js二叉树和链表.zip_js二叉树和链表_链表
版权申诉
189 浏览量
2022-09-20
10:02:16
上传
评论
收藏 1KB ZIP 举报
御道御小黑
- 粉丝: 58
- 资源: 1万+
最新资源
- 笔记实验六,spark,大数据分析
- ####蓝桥杯python的详细的信息介绍
- 电子万年历软件仿真(经过多次修改,保证正确性)
- Unity XR 手势射击控制脚本(适用于任何可手势识别的设备)
- 机械设计全自动电表(NB和IC卡表)控制和上壳装配线sw16可编辑非常好的设计图纸100%好用.zip
- 基于matlab的EAN-13条形码识别系统GUI界面.zip代码53
- matlab基于bp神经网络交通信号标志识别GUI界面13个标志.zip代码54
- 电子万年历答辩实物展示视频mp4格式
- 基于python实现的程序,包括哈希感知算法cvHash,图像切割cvsplit,固定目标检测cvRec(附文档ppt)等
- 计算0-10000之间所有偶数的和
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0