JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹插入節(jié)點(diǎn)、生成二叉樹示例
本文實(shí)例講述了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹插入節(jié)點(diǎn)、生成二叉樹。分享給大家供大家參考,具體如下:
javascript數(shù)據(jù)結(jié)構(gòu)與算法-- 插入節(jié)點(diǎn)、生成二叉樹
二叉樹中,相對(duì)較小的值保存在左節(jié)點(diǎn)上,較大的值保存在右節(jié)點(diǎn)中

/*
*二叉樹中,相對(duì)較小的值保存在左節(jié)點(diǎn)上,較大的值保存在右節(jié)點(diǎn)中
*
*
* */
/*用來生成一個(gè)節(jié)點(diǎn)*/
function Node(data, left, right) {
this.data = data;//節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)
this.left = left;
this.right = right;
this.show = show;
}
function show() {
return this.data;
}
/*用來生成一個(gè)二叉樹*/
function BST() {
this.root = null;
this.insert = insert;
}
/*將數(shù)據(jù)插入二叉樹
(1)設(shè)根節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn)。
(2)如果待插入節(jié)點(diǎn)保存的數(shù)據(jù)小于當(dāng)前節(jié)點(diǎn),則設(shè)新的當(dāng)前節(jié)點(diǎn)為原節(jié)點(diǎn)的左節(jié)點(diǎn);反
之,執(zhí)行第4步。
(3)如果當(dāng)前節(jié)點(diǎn)的左節(jié)點(diǎn)為null,就將新的節(jié)點(diǎn)插入這個(gè)位置,退出循環(huán);反之,繼續(xù)
執(zhí)行下一次循環(huán)。
(4)設(shè)新的當(dāng)前節(jié)點(diǎn)為原節(jié)點(diǎn)的右節(jié)點(diǎn)。
(5)如果當(dāng)前節(jié)點(diǎn)的右節(jié)點(diǎn)為null,就將新的節(jié)點(diǎn)插入這個(gè)位置,退出循環(huán);反之,繼續(xù)
執(zhí)行下一次循環(huán)。
* */
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 (true) {
parent = current;
if (data < current.data) {
current = current.left;//待插入節(jié)點(diǎn)保存的數(shù)據(jù)小于當(dāng)前節(jié)點(diǎn),則設(shè)新的當(dāng)前節(jié)點(diǎn)為原節(jié)點(diǎn)的左節(jié)點(diǎn)
if (current == null) {//如果當(dāng)前節(jié)點(diǎn)的左節(jié)點(diǎn)為null,就將新的節(jié)點(diǎn)插入這個(gè)位置,退出循環(huán);反之,繼續(xù)執(zhí)行下一次while循環(huán)。
parent.left = n;
break;
}
}
else {
current = current.right;//待插入節(jié)點(diǎn)保存的數(shù)據(jù)小于當(dāng)前節(jié)點(diǎn),則設(shè)新的當(dāng)前節(jié)點(diǎn)為原節(jié)點(diǎn)的左節(jié)點(diǎn)
if (current == null) {
parent.right = n;
break;
}
}
}
}
}
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);
console.log(nums);
使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼,可得如下運(yùn)行結(jié)果:

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript數(shù)據(jù)結(jié)構(gòu)和算法之二叉樹詳解
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的刪除算法示例
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的查找算法示例
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的遍歷算法示例
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的計(jì)數(shù)算法示例
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹遍歷算法詳解【先序、中序、后序】
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹實(shí)現(xiàn)查找最小值、最大值、給定值算法示例
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之檢索算法實(shí)例分析【順序查找、最大最小值、自組織查詢】
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹添加/刪除節(jié)點(diǎn)操作示例
相關(guān)文章
微信小程序藍(lán)牙連接小票打印機(jī)實(shí)例代碼詳解
這篇文章主要介紹了微信小程序藍(lán)牙連接小票打印機(jī)實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
JavaScript和jQuery獲取input框的絕對(duì)位置實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狫avaScript和jQuery獲取input框的絕對(duì)位置實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10
javascript實(shí)現(xiàn)編寫網(wǎng)頁版計(jì)算器
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)編寫網(wǎng)頁版計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
使用JS實(shí)現(xiàn)圖片展示瀑布流效果(簡單實(shí)例)
下面小編就為大家?guī)硪黄褂肑S實(shí)現(xiàn)圖片展示瀑布流效果(簡單實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09
Summernote實(shí)現(xiàn)圖片上傳功能的簡單方法
下面小編就為大家?guī)硪黄猄ummernote實(shí)現(xiàn)圖片上傳功能的簡單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
js實(shí)現(xiàn)的文字橫向無間斷滾動(dòng)
要實(shí)現(xiàn)這樣一個(gè)功能,文字在某塊區(qū)域內(nèi)橫向無間隙滾動(dòng)。2010-12-12
JavaScript設(shè)計(jì)模式--簡單工廠模式定義與應(yīng)用案例詳解
這篇文章主要介紹了JavaScript設(shè)計(jì)模式--簡單工廠模式定義與應(yīng)用,結(jié)合具體案例形式詳細(xì)分析了JavaScript設(shè)計(jì)模式中簡單工廠模式基本概念、定義、用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05
js輸入框使用正則表達(dá)式校驗(yàn)輸入內(nèi)容的實(shí)例
下面小編就為大家?guī)硪黄猨s輸入框使用正則表達(dá)式校驗(yàn)輸入內(nèi)容的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02

