二叉搜尋樹

2021-10-11 22:03:18 字數 2487 閱讀 4671

左子樹的節點值均小於根節點

右子樹的值均大於根節點

package tree;

public

class

node

public

node

(int data)

public

intgetdata()

public

void

setdata

(int data)

public node getleftchild()

public

void

setleftchild

(node leftchild)

public node getrightchild()

public

void

setrightchild

(node rightchild)

@override

public string tostring()

';}}

package tree;

/** * 二叉樹基本的類結構

*/public

class

binarytree

//查詢某個節點

public node find

(int data)

else

if(data > current.

getdata()

)else

}//迴圈完了,current==null說明樹里根本沒有我們要找的節點

return null;

}//插入節點

public

boolean

insert

(int data)

else

}else}}

}return

false

;//插入失敗

}//遍歷節點

//中序遍歷

public

void

midorder

(node current)

else

}//前序遍歷

public

void

preorder

(node current)

else

}//後序遍歷

public

void

afterorder

(node current)

else

}//查詢最大值和最小值

public node getmaxnode()

return maxnode;

}public node getminnode()

return minnode;

}//刪除節點

public

boolean

delete

(int data)

else

if(current == null)

}//正常迴圈結束,找到了要刪除的節點

//刪除找到的節點

if(current.

getleftchild()

== null && current.

getrightchild()

== null)

else

else

}return

true;}

else

if(current.

getleftchild()

!= null && current.

getrightchild()

== null)

else

else

}return

true;}

else

if(current.

getleftchild()

== null && current.

getrightchild()

!= null)

else

else

}return

true;}

else

else

else

} replacenode.

setleftchild

(current.

getleftchild()

);return

true;}

}public node getreplacenode

(node delnode)

if(replacenode != delnode.

getrightchild()

)return replacenode;

//我們要找的右子樹中的最小節點

}}

package tree;

public

class

binarytreetest

}

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 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 解釋 輸入為 ...