# 二元搜尋數的array建立法 ## 基本概念: 父節點 = floor(index / 2) 左子節點 = index * 2 右子節點 = index * 2 + 1 ## 第一種方法 ```python Python3 implementation of tree using array # numbering starting from 0 to n-1. tree = [None] * 10 def root(key): if tree[0] != None: print("Tree already had root") else: tree[0] = key def set_left(key, parent): if tree[parent] == None: print("Can't set child at", (parent * 2) + 1, ", no parent found") else: tree[(parent * 2) + 1] = key def set_right(key, parent): if tree[parent] == None: print("Can't set child at", (parent * 2) + 2, ", no parent found") else: tree[(parent * 2) + 2] = key def print_tree(): for i in range(10): if tree[i] != None: print(tree[i], end="") else: print("-", end="") print() # Driver Code root('A') set_right('C', 0) set_left('D', 1) set_right('E', 1) set_right('F', 2) print_tree() ``` ## 第二種方法: ```python= btree=[None]*1024 btree[1]='A' btree[2]='B' btree[3]='C' btree[4]='D' btree[5]='E' btree[7]='F' def preorder(p): if btree[p]: print(btree[p], ' ', end=''); preorder(2*p); preorder(2*p+1); def inorder(p): if btree[p]: inorder(2*p); print(btree[p], ' ', end=''); inorder(2*p+1); def postorder(p): if btree[p]: postorder(2*p); postorder(2*p+1); print(btree[p], ' ', end=''); preorder(1) print() inorder(1) print() postorder(1) print() ```