手敲下二叉樹
#coding=utf-8
class node(object):
def __init__(self, ele=1, left=none, right=none):
self.ele = ele
self.l = left
self.r = right
class binarytree(object):
def __init__(self, root=none):
self.root = root
def add(self, ele):
node=node(ele=ele)
if self.root == none:
self.root = node
else:
queue = [self.root]
while queue:
cur = queue.pop(0)
if cur.l == none:
cur.l = node
return
if cur.r == none:
cur.r = node
return
def breath_tral(self):
if self.root == none:
print('空樹')
return
else:
queue = [self.root]
while queue:
cur = queue.pop(0)
print(cur.ele)
def pre_tral(self, cur):
if cur == none:
return
else:
print(cur.ele)
self.pre_tral(cur.l)
self.pre_tral(cur.r)
def mid_tral(self, cur):
if cur == none:
return
else:
self.mid_tral(cur.l)
print(cur.ele)
self.mid_tral(cur.r)
def post_tral(self, cur):
if cur == none:
return
else:
self.post_tral(cur.l)
self.post_tral(cur.r)
print(cur.ele)
if __name__ == "__main__":
tree = binarytree()
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(5)
tree.add(6)
tree.add(7)
tree.add(8)
# tree.breath_tral()
# tree.pre_tral(tree.root)
tree.post_tral(tree.root)
二叉樹的性質:
二叉樹有以下幾個性質:todo(上標和下標)
性質1:二叉樹第i層上的結點數目最多為 2 (i≥1)。
性質2:深度為k的二叉樹至多有2-1個結點(k≥1)。
性質3:包含n個結點的二叉樹的高度至少為log2 (n+1)。
性質4:在任意一棵二叉樹中,若終端結點的個數為n0,度為2的結點數為n2,則n0=n2+1。
定義:高度為h,並且由2 –1個結點的二叉樹,被稱為滿二叉樹。
完全二叉樹
來自:
二叉樹的構造和遍歷
二叉樹節點定義 typedef struct bnode bnode,btree 建立二叉樹 int creatbtree btree tree return0 刪除二叉樹 int destorybtree btree tree if tree return 0 訪問二叉樹 void visit b...
二叉樹 中序遍歷和後序遍歷樹構造二叉樹 中等
根據中序遍歷和後序遍歷樹構造二叉樹 你可以假設樹中不存在相同數值的節點 您在真實的面試中是否遇到過這個題?是 給出樹的中序遍歷 1,2,3 和後序遍歷 1,3,2 返回如下的樹 2 1 3 definition of treenode class treenode class solution 左右...
二叉樹 根據遍歷構造二叉樹
二叉樹中的三種遍歷方式,是我們最為熟知的,通過先序遍歷 中序遍歷或者是中序遍歷 後序遍歷都可以唯一確定一棵二叉樹 但是注意,先序遍歷 後序遍歷不能確定一棵二叉樹,但是如果一棵二叉樹中只有度為0和度為2的節點,那麼這種遍歷方式也是可以確定一棵確定的二叉樹的。先序 中序 構造二叉樹 下面我們分別來看一下...