遞迴建立二叉樹

2021-10-02 18:49:32 字數 1207 閱讀 7047

# coding=utf-8

# coding=utf-8

class

treenode

:def

__init__

(self,val,left=

none

,right=

none):

self.val=val;

self.left=left;

self.right=right;

defcreattree()

: node = treenode(0)

; temp=

input

('請輸入:');

if temp==

'#':

return

none

else

: node.val=temp;

node.left=creattree();

node.right=creattree();

return node

return node

defprintf

(treenode)

:if treenode:

print

(treenode.val)

; printf(treenode.left)

; printf(treenode.right)

;if __name__ ==

'__main__'

: printf(creattree())

;

圖上方法是正確的,但是有幾個分叉就要幾個#,這才能結束。

以下錯誤

def

creattree

(node)

: temp=

input

('請輸入:');

if temp==

'#':

return

none

else

: node.val=temp;

node.left=creattree(node)

; node.right=creattree(node)

;return node

return node

這個node到底是哪個node??計算機會出錯。直接方法裡面例化即可。

遞迴建立二叉樹

通常對於二叉樹的建立採用兩種方式 遞迴建立和非遞迴建立。本文在這裡採用遞迴方法建立二叉樹,並且敘述有關二叉樹三種遍歷方式以及求有關節點的相關問題等。首先定義乙個有關二叉樹的結構體,結構體中包含整型的data,以及結構體型別的左右子樹left和right。然後是建立有關二叉樹的結點,相關 如下 typ...

非遞迴建立二叉樹

通過二叉鍊錶建立二叉樹,二叉鍊錶的節點結構如下 template class t struct binode 二叉樹類的結構如下 template class t class bitree 二叉樹建立的過程如下圖所示 可以利用棧來實現非遞迴建立,另外還需要建立一種棧節點結構,該結構包括 注意 sta...

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...