1. 程式人生 > >給定二叉搜尋樹和兩個整數A,B (最小整數和最大整數)。如何刪除不在該區間內的元素(剪枝)

給定二叉搜尋樹和兩個整數A,B (最小整數和最大整數)。如何刪除不在該區間內的元素(剪枝)

由於需要檢查樹中的每一個元素,結點的處理順序可以是從葉子結點到根結點。這樣當處理到結點本身時,其左子樹和右字樹為有效剪枝的BST。

static BianrySearchTreeNode PruneBST(BianrySearchTreeNode root, int A, int B){
		if(root == null)
			return null;
		root.setLeft(PruneBST(root.getLeft(), A, B));
		root.setRight(PruneBST(root.getRight(), A, B));
		if(root.getData()>=A && root.getData()<=B)
			return root;
		if(root.getData()<A)
			return root.getRight();
		if(root.getData()>B)
			return root.getLeft();
		return root;
	}