二叉搜尋樹的基本操作

2021-10-06 17:24:30 字數 1283 閱讀 9010

public class testdemo

}//查詢操作

//根節點,root為空表示為空樹

private node root = null;

//查詢key是否存在於樹中,如果在 返回對應的node

public node find(int key) else if (key > cur.key) else

}//上面三種情況都沒有說明沒有對應的key 返回null

return null;

}//插入操作

//二叉搜尋樹中不允許存在相同的key元素

//如果發現新插入的key重複 則插入失敗 返回false

//插入成功返回true

public boolean insert(int key)

//和查詢類似,需要先找到合適的位置,再插入元素

node cur = root;

//parent始終指向cur的父節點

node parent = null;

while (cur != null) else if (key > cur.key) else

}//迴圈結束,cur就指向null,當前元素就要插入到parent的子樹上

//要判斷一下 才能決定插到左子樹還是右子樹

if (key < parent.key) else

return true;

}//刪除操作

//key在樹中存在,就刪除成功 返回true

//key在樹中不存在,就刪除失敗,返回false

public boolean remove(int key) else if (key > cur.key) else

}return false;

}private void removenode(node parent, node cur) else if (cur == parent.left) else

//2.待刪除的節點cur沒有右子樹

} else if (cur.right == null) else if (cur == parent.left) else

} else

//迴圈結束時,smallnode指向的就是右子樹中的最小值

//2)把找到的最小值賦值給待刪除節點cur

cur.key = smallnode.key;

//3)刪除最小值節點

//最小值節點肯定沒有左子樹 對應的筆記中1,2的情況

if (smallnode == goatparent.left) else }}

二叉搜尋樹的基本操作

建立乙個非負二叉搜尋樹 1表空結點 編寫查詢函式,層序遍歷函式,插入函式,刪除函式,查詢最大值最小值函式 輸入該樹和要查詢的值 輸出 如果找到,列印出 x is found 沒找到列印出 not found 列印出層序遍歷序列 刪除最大值和最小值 刪除成功輸出 x is delete 最後再進行一層...

二叉搜尋樹的基本操作

二叉搜尋樹 binary search tree 它或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉搜尋樹樹。節點設定 typedef int datat...

二叉搜尋樹的基本操作

pragma once typedef int datatype typedef struct bstreenode bstnode include include include bstnode buybstreenode datatype data pnewnode data data pnew...