【資料結構】二叉樹一些基本演算法
阿新 • • 發佈:2018-12-14
- 二叉樹中搜索某個元素的演算法。
/** * 查詢二叉樹中元素 * @param root * @param data * @return */ Boolean FinadInBT(BT root, int data) { Boolean temp; if (root == null) return false; else { if (data == root.getData()) { return true; } else { temp = FinadInBT(root.getLeft(), data); if (temp == true) return temp; else return (FinadInBT(root.getRight(), data)); } } return 0; }
- 將一個元素插入二叉樹的演算法
/** * 二叉樹種插入元素 * @param root * @param data */ void InsertInBT(BT root,int data){ //需要一個新結點 //一個佇列 //一個指標 LLQueue Q=new LLLQueue(); BT newnode=new BT(); BT temp; newnode.setLeft(null); newnode.setRight(null); Q.enQueue(root); if (!Q.isEmpty) { temp=Q.deQueue(); if(temp.getLeft()){ Q.enQueue(temp.getLeft()) }else { temp.setLeft(newnode); Q.deleteQueue(); return; } if (temp.getRight()) { Q.enQueue(temp.getRight()) }else { temp.setRight(newnode); Q.deleteQueue(); return; } } Q.deleteQueue(); }
獲取二叉樹結點個數的演算法
/**
* 獲取二叉樹中結點個數
*/
int NumOfBT(BT root){
if (root==null) {
return 0;
}
else {
return(NumOfBT(root.getLeft())+1+NumOfBT(root.getRight()));
}
}