File tree Expand file tree Collapse file tree 1 file changed +62
-1
lines changed
Expand file tree Collapse file tree 1 file changed +62
-1
lines changed Original file line number Diff line number Diff line change @@ -51,12 +51,23 @@ where
5151 // Insert a value into the BST
5252 fn insert ( & mut self , value : T ) {
5353 //TODO
54+ match & mut self . root {
55+ None => {
56+ self . root = Some ( Box :: new ( TreeNode :: new ( value) ) ) ;
57+ }
58+ Some ( node) => {
59+ node. insert ( value) ;
60+ }
61+ }
5462 }
5563
5664 // Search for a value in the BST
5765 fn search ( & self , value : T ) -> bool {
5866 //TODO
59- true
67+ match & self . root {
68+ None => false , // 空树
69+ Some ( node) => node. search ( & value) ,
70+ }
6071 }
6172}
6273
6778 // Insert a node into the tree
6879 fn insert ( & mut self , value : T ) {
6980 //TODO
81+ match value. cmp ( & self . value ) {
82+ Ordering :: Less => {
83+ // 插入值小于当前节点值,应该放到左子树
84+ match & mut self . left {
85+ None => {
86+ // 创建新节点并存入值
87+ self . left = Some ( Box :: new ( TreeNode :: new ( value) ) ) ;
88+ }
89+ Some ( left_node) => {
90+ // 递归插入
91+ left_node. insert ( value) ;
92+ }
93+ }
94+ }
95+ Ordering :: Greater => {
96+ // 插入值大于当前节点值,应该放到右子树
97+ match & mut self . right {
98+ None => {
99+ // 创建新节点并存入值
100+ self . right = Some ( Box :: new ( TreeNode :: new ( value) ) ) ;
101+ }
102+ Some ( right_node) => {
103+ // 递归插入
104+ right_node. insert ( value) ;
105+ }
106+ }
107+ }
108+ Ordering :: Equal => {
109+
110+ }
111+ }
112+ }
113+ fn search ( & self , value : & T ) -> bool {
114+ match value. cmp ( & self . value ) {
115+ Ordering :: Less => {
116+ // 要查找的值小于当前节点值,在左子树中查找
117+ match & self . left {
118+ None => false ,
119+ Some ( left_node) => left_node. search ( value) ,
120+ }
121+ }
122+ Ordering :: Greater => {
123+ // 要查找的值大于当前节点值,在右子树中查找
124+ match & self . right {
125+ None => false ,
126+ Some ( right_node) => right_node. search ( value) ,
127+ }
128+ }
129+ Ordering :: Equal => true , // 找到值
130+ }
70131 }
71132}
72133
You can’t perform that action at this time.
0 commit comments