二叉樹構造和遍歷

2021-09-18 03:16:15 字數 2001 閱讀 7494

手敲下二叉樹

#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的節點,那麼這種遍歷方式也是可以確定一棵確定的二叉樹的。先序 中序 構造二叉樹 下面我們分別來看一下...