二叉搜尋樹實現 in Go語言

2021-07-11 07:01:57 字數 1421 閱讀 1771

用go實現了下二叉搜尋樹,還是花了不少時間,在實現中使用的是單向鍊錶,這才算是體會到了雙向鍊錶在實現中的優勢

package datastructure

import (

"container/list"

"fmt"

)type bstree struct

type node struct

// newbstree 建立樹

func newbstree() *bstree

}func (t *bstree) insert(value int)

x := t.root

for x != nil else

} if parent == nil else if z.value < parent.value else

}func (t *bstree) search(x int) *node else if x < node.value else

} return nil

}func (t *bstree) delete(x int) bool else if x < node.value else

} if isfind == false

//情況一:node為葉節點

if node.left == nil && node.right == nil else else

} return true

} //情況二:左孩子邊為空或右邊孩子為空

if node.left == nil || node.right == nil else

} else else

} else else

}} return true

} //情況三:兩個孩子都不為空

re := node.left

re_parent := node

for re.right != nil

node.value = re.value

if node == re_parent else

return true

}//printtree1 遞迴結構

func (t *node) printtree1()

fmt.print(t.value," ")

if t.right != nil

}//printtree2 非遞迴結構

func (t *node) printtree2()

stack.remove(node)

v, _ := node.value.(*node)

fmt.println(v.value)

if v.left != nil

if v.right != nil

}}

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 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...

C語言實現 二叉搜尋樹

什麼是二叉搜尋樹?二叉搜尋樹是一顆二叉樹,樹中的每乙個節點的值都是大於其左子樹的值小於其右子樹的值,而且其每一棵子樹都是一顆二叉搜尋樹,其中序遍歷結果是從小到大依次排列的。以下是二叉搜尋樹的相關操作的 pragma once include include include typedef char ...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...