js如何遍历二叉树??
来源:互联网 发布:ubuntu开机启动项 编辑:程序博客网 时间:2024/05/17 02:01
1、在百度前端学院看到这一题,一年前学的数据结构,感觉忘得差不多了,然后找了一篇博客算是简单的复习下二叉树题目。
2、下面是我写的js遍历二叉树,包括前序,中序,后序三种遍历方式,也有借鉴的部分哦。
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><style type="text/css">/*二叉树节点基本样式*/.node_1,.node_2,.node_3,.node_4,.node_5{border: 2px solid #1C86EE;float: left;padding: 5px;margin: 5px;box-sizing: content-box;background: #FFFFFF;border-radius: 10px;color:#1C86EE ;}.node_1{width: 800px;height: 300px;}.node_2{width: 350px;height: 250px;}.node_3{width: 125px;height: 210px;}.node_4{width: 80px;height: 80px;}.node_5{width: 7px;height: 20px;}</style><body><div class="node_1"> <!--根节点 --> 1<div class="node_2">2<div class="node_3">3 <div class="node_4"> 4<div class="node_5">5</div> <div class="node_5">5</div> </div> <div class="node_4"> 4<div class="node_5">5</div> <div class="node_5">5</div> </div></div> <div class="node_3">3 <div class="node_4">4 <div class="node_5">5</div> <div class="node_5">5</div> </div> <div class="node_4">4 <div class="node_5">5</div> <div class="node_5">5</div> </div> </div></div><div class="node_2">2<div class="node_3">3 <div class="node_4">4 <div class="node_5">5</div> <div class="node_5">5</div> </div> <div class="node_4">4 <div class="node_5">5</div> <div class="node_5">5</div> </div></div> <div class="node_3">3 <div class="node_4">4 <div class="node_5">5</div> <div class="node_5">5</div> </div> <div class="node_4">4 <div class="node_5">5</div> <div class="node_5">5</div> </div> </div></div></div><input type="button" value="前序" /> <!--触动前序排列的按钮 根左右--><input type="button" value="中序" /> <!--触动中序排列的按钮 左根右--><input type="button" value="后序" /> <!--触动后序排列的按钮 左右根--><script type="text/javascript">var btn = document.getElementsByTagName("input"), preBtn = btn[0], inBtn = btn[1], lastBtn = btn[2], treeNodes = [], //按照遍历节点顺序记录的各个节点 treeRoot = document.getElementsByClassName('node_1')[0], //获得根节点 timer = null; //用做清除setInterval();window.onload = function(){preBtn.onclick = function(){reset(); //重置所有节点样式,为初始状态preOrder(treeRoot); //前序遍历二叉树changeColor(); //按照遍历的顺序改变节点的颜色}inBtn.onclick = function(){reset();inOrder(treeRoot);changeColor();}lastBtn.onclick = function(){reset();lastOrder(treeRoot);changeColor();}}function preOrder(node){if(!(node == null)){treeNodes.push(node); preOrder(node.firstElementChild);preOrder(node.lastElementChild);}}function inOrder(node){if(!(node == null)){inOrder(node.firstElementChild);treeNodes.push(node);inOrder(node.lastElementChild);}}function lastOrder(node){if(!(node == null)){lastOrder(node.firstElementChild);lastOrder(node.lastElementChild);treeNodes.push(node);}}function changeColor(){var i = 0;treeNodes[i].style.backgroundColor = "#63B8FF"; //使遍历的第一个节点改变背景颜色timer = setInterval(function(argument){i++;if(i < treeNodes.length){treeNodes[i-1].style.backgroundColor = "white"; //使上一个节点变成原始颜色treeNodes[i].style.backgroundColor = "#63B8FF"; //使当前节点改变背景颜色}else{clearInterval(timer); //清除clearInterval()treeNodes[i-1].style.backgroundColor = "white"; //因为又执行i++,所以如果改变组后一个元素颜色需要i-1}},700)}function reset(){ //重置函数treeNodes = [];clearInterval(timer);var divs = document.getElementsByTagName('div');for (var i = 0; i < divs.length; i++) {divs[i].style.backgroundColor = "white";}}</script></body></html>3、我认为js遍历二叉树有两个核心,第一当然是自己要明白二叉树三种遍历规则,第二个就是是否能够理解递归函数,这两点理解了,就没什么了
阅读全文
0 0
- js如何遍历二叉树??
- JS中的二叉树遍历
- js实现二叉树遍历
- 二叉树之层次遍历(js)
- js 遍历二叉数
- 如何根据两个遍历建立二叉树
- 如何实现二叉树层次遍历
- Flex布局+JS:实现可视化的二叉树遍历
- 已知二叉树的中序遍历和后序遍历,如何求前序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的中序遍历和后序遍历,如何求前序遍历
- 已知二叉树的先序遍历和中序遍历,如何求后序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- js如何遍历dom
- Js如何遍历Set
- 二叉树系列(1)已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 二叉树系列(1)已知二叉树的中序遍历和前序遍历,如何求后序遍历
- angularJS 基本过滤器
- MyEclipse优化
- 新用户如何获得阿里云优惠怎么才能省钱-写给阿里云新手
- 极客漫画:数据库链接池中的生生死死
- 修改类文件 tomcat不用重启,验证码出不来的问题
- js如何遍历二叉树??
- 加密方法
- 男子疯了,投资银行产品竟因一规定少收入几十万
- pg_dump -F t 独立表不能超过8GB吗?超过8GB 会提示什么报错??
- Spark Streaming整合Kafka(二)
- 新手学习java路线--付视频下载地址
- JAVA读取、写入Excel表格(含03版)
- Python学习笔记01
- Qt paintevent事件