用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 ...