golang實現二叉搜尋樹

2022-07-22 08:30:29 字數 994 閱讀 8619

資料結構

首先我們定義需要的資料結構。注意,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 ...