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