1. 程式人生 > >【資料結構】二叉樹一些基本演算法

【資料結構】二叉樹一些基本演算法

  • 二叉樹中搜索某個元素的演算法。
/**
	 * 查詢二叉樹中元素
	 * @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()));
		}
	}