二叉搜尋樹

2021-06-23 04:53:14 字數 2081 閱讀 1313

//搜尋二叉樹的節點

private static class stnode

}//end class stnode

//add()插入節點

public boolean add(t item)

else if(ordervalue < 0)

else

}//end while

newnode = new stnode(item, parent);

if(parent == null)

else if(ordervalue < 0)

else

treesize ++;

modcount ++;

return true;

}//end add()

//remove()刪除指定節點

private void removenode(stnodednode)

stnodepnode,rnode;

pnode = dnode.parent;

//要刪除的節點至少有乙個子節點為空的情況

if(dnode.left == null || dnode.right == null)

else

//要刪除的節點不為空

if(rnode != null)

if(pnode == null)

else if(((comparable)dnode.nodevalue).compareto(pnode.nodevalue) < 0)

else

}//end if

//當兩個節點都不為空的時候,選擇比要刪除節點大的最小的節點作為目標節點,

//把目標節點的值和要刪除節點互換,然後目標節點節點。

//找到的目標節點有兩種情況,要麼為要刪除節點的右節點且左子節點為空,dnode.right = rnode.right;

//要麼目標節點的左子為空,且目標節為父節點的左子節點。pofrnode.left = rnode.right;

else

dnode.nodevalue = rnode.nodevalue;

if(pofrnode == dnode )

else

if(rnode.right != null)

}//end else

}//end remove()

//remove()根據值刪除節點

public boolean remove(object item)

removenode(dnode);

treesize --;

modcount++;

return true;

}//end remove(object item)

//找到指定的節點

private stnodefindnode(object item)

else if(ordervalue < 0)

else

}//end while

return null;

}//end findnode()

//內部類構造迭代器

private class iteratorimpl implements iterator

}}//end 建構函式

public boolean hasnext()

public t next()

lastreturned = nextnode;

stnodep ;

//當前節點的右子節點不為空

//找到右子節點中德最小值,即最左邊的值

if(nextnode.right != null)

}//當前節點的右子節點為空

//向上遍歷知道當前節點為父節點的左子節點為止

//則該父節點就是要找的下乙個節點

else

nextnode = p;

}return lastreturned.nodevalue;

}

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...