題目鏈結
1.返回值和引數:輸入根節點 和插入值val,輸出插入後的根節點
2.單層遞迴邏輯:val比當前值大則插入在其右子樹,否則插入在其左子樹
3.終止條件:當前節點為空,則val插入在這裡返回
treenode*
insertintobst
(treenode* root,
int val)
treenode*
insertintobst
(treenode* root,
int val)
treenode* curnode = root;
//臨時節點遍歷,保持頭節點不動
treenode* prenode = root;
//記錄插入的是哪個節點的子樹
while
(curnode)
//樹不為空搜尋待插入的位置
treenode* newnode =
newtreenode
(val);if
(prenode-
>val > val)
prenode-
>left = newnode;
else
prenode-
>right = newnode;
return root;
}
二叉搜尋樹(遞迴 非遞迴)
完整源 在此 1 二叉搜尋樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹。若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有的節點的值都大於根節點的值 它的左右子樹也分為二叉搜尋樹 此二叉樹的中序遍歷結果為 0,1,2,3...
二叉搜尋樹的迭代器
我們經常使用著我們並不熟悉的函式 類,我們只知道它們所提供的介面以及怎樣使用。這就像我們開車在馬路上,你可能並不知道汽車是如何執行,或許你會說這並不需要知道。但至少知道一些回在車拋錨的時候你能做一些事,而不是抽根菸無所事事等維修隊過來 如果路上很擠,你就倒霉了 我們也有必要知道問題 在程式出問題的時...
二叉搜尋樹 插入 查詢
宣告 第一次寫二叉搜尋樹,可能會有bug 這棵二叉搜尋樹以中序遍歷的方式輸出,所以插入 儲存的規則也是按照中序遍歷的規則 include using namespace std struct node node root,nil 根節點和乙個空結點 void insert int key else ...