用JS實現二叉樹

2022-08-24 03:21:11 字數 2083 閱讀 8398

用js實現二叉樹資料結構, 完成遍歷、查詢最大/小值、查詢特定值以及刪除節點的操作。

參考博文

//

定義節點

class node }//

建立二叉搜尋樹(bst))

class binarysearchtree

//插入節點

insert(data)

else

}else

else}};

if(!this

.root)

else

}//中序遍歷

inorder()

};inordernode(

this

.root,callback);

function

callback(v)

return

backs

}//前序遍歷

preorder()

};preordernode(

this

.root,callback);

function

callback(v)

return

backs

}//後序遍歷

postorder()

};postordernode(

this

.root,callback);

function

callback(v)

return

backs

}//查詢最小值

getmin(node);

return minnode( node || this

.root)

}//查詢最大值

getmax(node);

return minnode(node || this

.root)

}//查詢特定值

find(data);

return findnode(this

.root,data)

}//刪除節點

remove(data)

} else

if(data else

};return removenode(this

.root,data)

}} //建立bst

const tree = new

binarysearchtree();

tree.insert(11);

tree.insert(7);

tree.insert(5);

tree.insert(3);

tree.insert(9);

tree.insert(8);

tree.insert(10);

tree.insert(13);

tree.insert(12);

tree.insert(14);

tree.insert(20);

tree.insert(18);

tree.insert(25);

console.log(tree);

console.log(tree.root);

//中序遍歷bst

console.log(tree.inorder());

//前序遍歷bst

console.log(tree.preorder());

//後序遍歷bst

console.log(tree.postorder());

//搜尋最小值

console.log(tree.getmin());

//搜尋最大值

console.log(tree.getmax());

//查詢特定值

console.log(tree.find(2));

console.log(tree.find(3));

console.log(tree.find(20));

//刪除節點,返回新的二叉樹,不改變原來的二叉樹

console.log(tree.remove(11));

a=tree.remove(11);

console.log(a.root);

console.log(tree);

用二叉樹實現Trie樹

1.引言 trie樹是一種快速查詢樹,關於trie樹的特性和優點,這裡就不再羅嗦了,請參照這篇文章 trie樹實現詞典查詢演算法。在此文中,trie樹的實現用的是二十六叉樹,理解起來直觀易懂,演算法也簡單明瞭,但是有乙個致命的弱點,就是浪費空間。特別是在資料規模比較小的情況下,資料稀疏問題表現的特別...

用二叉樹實現排序

package com.huang public class nodetree 實現 有序二叉樹 nodetree nodetree newnodetree for int i 0 i nodetree.inorder 輸出中序遍歷結果 nodetree.preorder 前序遍歷 nodetree...

用pyplot列印二叉樹,實現二叉樹的視覺化

定義獲取畫二叉樹必要資訊的方法 最後來畫圖 第一次寫部落格哈哈哈哈哈 最近實驗題目多涉及二叉樹,每次除錯在監視視窗檢視二叉樹需要挨個挨個點,十分麻煩,於是就想直接將二叉樹畫出來看看,比較直觀。為了避免重合,二叉樹左右子樹的距離是關鍵 讓每乙個節點占用乙個列空間,這樣就不會重合了 所以左節點與父節點在...