資料結構
首先我們定義需要的資料結構。注意,treenode的左右節點都是treenode type的,而樹只有乙個root資料域,為treenode type
type treenode struct
type binarysearchtree struct
insert
向二叉搜尋樹中插入元素,首先要找到插入的位置,然後再插入。這裡注意我們的實現方法為給treenode和binarysearchtree這兩個type新增方法。
需要注意給type新增方法的方式,同時還要注意,如果你要改變方法呼叫者,則需要使用指標
func (tree binarysearchtree) insert (v int)
func (node *treenode) insert (v int)else
}}else else
}}}
遍歷
樹的遍歷有前序,後序,中序等等。這裡以中序為例。注意slice與slice指標的不同
func (tree binarysearchtree) inorder() int
func (node *treenode) inorder(result *int)
if node.right != nil
}
最大最小值
func (tree binarysearchtree) findmin() int else
}}func (tree binarysearchtree) findmax() int else
}}
查詢
func (tree binarysearchtree) contains(v int) bool else if (node.value == v) else if (node.value > v)else
}}
驗證二叉搜尋樹的golang實現
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 輸入 2 1 3輸出 true 輸入 5 1 4 36輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 我們只要判斷每個子樹中的左孩子小於根節點,右孩子大於根...
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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 ...