国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解

來源:懂視網 責編:小采 時間:2020-11-27 22:27:04
文檔

JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解

JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解:本文實例講述了JavaScript實現二叉樹的先序、中序及后序遍歷方法。分享給大家供大家參考,具體如下: 之前學數據結構的時候,學了二叉樹的先序、中序、后序遍歷的方法,并用C語言實現了,下文是用js實現二叉樹的3種遍歷,并以動畫的形式展現出遍歷的過程。
推薦度:
導讀JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解:本文實例講述了JavaScript實現二叉樹的先序、中序及后序遍歷方法。分享給大家供大家參考,具體如下: 之前學數據結構的時候,學了二叉樹的先序、中序、后序遍歷的方法,并用C語言實現了,下文是用js實現二叉樹的3種遍歷,并以動畫的形式展現出遍歷的過程。

本文實例講述了JavaScript實現二叉樹的先序、中序及后序遍歷方法。分享給大家供大家參考,具體如下:

之前學數據結構的時候,學了二叉樹的先序、中序、后序遍歷的方法,并用C語言實現了,下文是用js實現二叉樹的3種遍歷,并以動畫的形式展現出遍歷的過程。

整個遍歷過程還是采用遞歸的思想,原理很粗暴也很簡單

先序遍歷的函數:

function preOrder(node){
 if(!(node==null)){
 divList.push(node);
 preOrder(node.firstElementChild);
 preOrder(node.lastElementChild);
 }
}

中序遍歷的函數:

function inOrder(node) {
 if (!(node == null)) {
 inOrder(node.firstElementChild);
 divList.push(node);
 inOrder(node.lastElementChild);
 }
}

后序遍歷的函數:

function postOrder(node) {
 if (!(node == null)) {
 postOrder(node.firstElementChild);
 postOrder(node.lastElementChild);
 divList.push(node);
 }
}

顏色變化函數:

function changeColor(){
 var i=0;
 divList[i].style.backgroundColor = 'blue';
 timer=setInterval(function(argument){
 i++;
 if(i<divList.length){
 divList[i-1].style.backgroundColor="#fff";
 divList[i].style.backgroundColor="blue";
 }
 else{
 divList[divList.length-1].style.backgroundColor="#fff";
 }
 },500)
}

核心代碼如上,本來想寫深度優先遍歷和廣度優先遍歷。后來發現二叉樹深度優先遍歷和先序遍歷相同。改日總結一下樹的BFS和DFS。

全部代碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title></title>
 <style>
 .root{
 display: flex;
 padding: 20px;
 width: 1000px;
 height: 300px;border: 1px solid #000000;
 margin: 100px auto;
 margin-bottom: 10px;
 justify-content: space-between;
 }
 .child_1{
 display: flex;
 padding: 20px;
 width: 450px;
 height: 260px;border: 1px solid red;
 justify-content: space-between;
 }
 .child_2{
 display: flex;
 padding: 20px;
 width: 170px;
 height: 220px;border: 1px solid green;
 justify-content: space-between;
 }
 .child_3{
 display: flex;
 padding: 20px;
 width: 35px;
 height: 180px;border: 1px solid blue;
 justify-content: space-between;
 }
 input{
 margin-left: 100px;
 width: 60px;
 height: 40px;
 font:20px italic;
 }
 </style>
</head>
<body>
<div class="root">
 <div class="child_1">
 <div class="child_2">
 <div class="child_3"></div>
 <div class="child_3"></div>
 </div>
 <div class="child_2">
 <div class="child_3"></div>
 <div class="child_3"></div>
 </div>
 </div>
 <div class="child_1">
 <div class="child_2">
 <div class="child_3"></div>
 <div class="child_3"></div>
 </div>
 <div class="child_2">
 <div class="child_3"></div>
 <div class="child_3"></div>
 </div>
 </div>
</div>
<input type="button" value="先序">
<input type="button" value="中序">
<input type="button" value="后序">
<script type="text/javascript" src="遍歷.js"></script>
</body>
</html>

js:

/**
 * Created by hp on 2016/12/22.
 */
var btn = document.getElementsByTagName('input'),
 preBtn = btn[0],
 inBtn = btn[1],
 postBtn = btn[2],
 treeRoot = document.getElementsByClassName('root')[0],
 divList = [],
 timer = null;
window.onload=function(){
 preBtn.onclick = function () {
 reset();
 preOrder(treeRoot);
 changeColor();
 }
 inBtn.onclick = function () {
 reset();
 inOrder(treeRoot);
 changeColor();
 }
 postBtn.onclick = function () {
 reset();
 postOrder(treeRoot);
 changeColor();
 }
}
/*先序遍歷*/
function preOrder(node){
 if(!(node==null)){
 divList.push(node);
 preOrder(node.firstElementChild);
 preOrder(node.lastElementChild);
 }
}
/*中序遍歷*/
function inOrder(node) {
 if (!(node == null)) {
 inOrder(node.firstElementChild);
 divList.push(node);
 inOrder(node.lastElementChild);
 }
}
/*后序遍歷*/
function postOrder(node) {
 if (!(node == null)) {
 postOrder(node.firstElementChild);
 postOrder(node.lastElementChild);
 divList.push(node);
 }
}
/*顏色變化函數*/
function changeColor(){
 var i=0;
 divList[i].style.backgroundColor = 'blue';
 timer=setInterval(function(argument){
 i++;
 if(i<divList.length){
 divList[i-1].style.backgroundColor="#fff";
 divList[i].style.backgroundColor="blue";
 }
 else{
 divList[divList.length-1].style.backgroundColor="#fff";
 }
 },500)
}
function reset(){
 divList=[];
 clearInterval(timer);
 var divs=document.getElementsByTagName("div");
 for(var i=0;i<divs.length;i++){
 divs[i].style.backgroundColor="#fff";
 }
}

由此可見,二叉樹的遍歷思想是一樣的。之前一直把JS看做是寫各種特效的語言,現在向來是too naive了。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》

希望本文所述對大家JavaScript程序設計有所幫助。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解

JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解:本文實例講述了JavaScript實現二叉樹的先序、中序及后序遍歷方法。分享給大家供大家參考,具體如下: 之前學數據結構的時候,學了二叉樹的先序、中序、后序遍歷的方法,并用C語言實現了,下文是用js實現二叉樹的3種遍歷,并以動畫的形式展現出遍歷的過程。
推薦度:
標簽: 方法 js 詳解
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top 主站蜘蛛池模板: 日本中文字幕有码 | 91久久精品国产免费一区 | 久久国产精品成人免费古装 | 久久国语精品 | 亚洲 欧美 国产另类首页 | 免费观看成人www精品视频在线 | 另类专区另类专区亚洲 | 一级一级一级毛片免费毛片 | 久久久久久亚洲精品中文字幕 | 日韩免费在线 | 亚洲一区二区三区中文字幕 | 日韩在线不卡 | 亚洲色图欧美 | 日本我不卡 | 精品国产高清自在线一区二区三区 | 国产一区二区三区视频 | 国产91精品久久久久久 | 青草青草伊人精品视频 | 国产精品久久久久久永久牛牛 | 亚洲国产精品综合久久网络 | 美日韩精品| 亚洲人一区 | 欧美日韩国产va另类 | 亚洲欧美日韩中文v在线 | 91精品国产99久久 | 精品欧美一区二区在线观看欧美熟 | www.a级片 | 国产全部视频在线播放 | 免费国产一级 | 99久久精品国产综合一区 | 亚洲va乱码一区二区三区 | 亚洲成人一区在线 | 国产一级片免费看 | 欧美精品国产综合久久 | 97一区二区三区四区久久 | 欧美人与禽交zozo | 亚洲国内精品 | 中文字幕一区久久久久 | 一级毛片不卡片免费观看 | 国产成人精品一区二区三在线观看 | 91麻豆网站 |