38 二叉樹的尋找 插入

2021-10-03 04:26:53 字數 1678 閱讀 4881

#二叉樹的插入,尋找。如果有就不用插入,如果沒有就插入

class

tree

:def

__init__

(self)

: self.data=

0 self.left=

none

self.right=

none

defcreate_tree

(root,val)

: newnode=tree(

) newnode.data=val

if root==

none

: root=newnode

return root

else

: current=root

while current!=

none

: backup=current

if current.data>val:

current=current.left

else

: current=current.right

if backup.data>val:

backup.left=newnode

else

: backup.right=newnode

return root

defsearch

(ptr,data)

:#先查詢有沒有,,沒有的話再插入

i =1while

true

:if ptr==

none

:return ptr

if ptr.data==data:

print

('通過[%d]次找到'

%i)return ptr

elif ptr.data>data:

ptr=ptr.left

else

: ptr=ptr.right

i+=1def

midorder

(ptr)

:#中序遍歷

if ptr!=

none

: midorder(ptr.left)

print

('中序法排序為%d'

%ptr.data)

midorder(ptr.right)

data=[7

,1,4

,2,8

,13,12

,11,15

,9,5

]ptr=

none

lookfor=

13for i in

range

(len

(data)):

ptr=create_tree(ptr,data[i]

)result=search(ptr,lookfor)

if result==

none

:print

('沒有找到'

) ptr = create_tree(ptr, lookfor)

else

:print

("不用插入"

)midorder(ptr)

參考**資料結構書

38 二叉樹的深度

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。解法1 遞迴版,首先,給出遞迴結束的條件,當樹為空時,深度為零,接下來,就是一層一層的遞迴了,比較左右子數的深度,其中值較大的作為當前子節點所在層的深度,則父節點的深度為...

38 二叉樹的深度

2.利用層序遍歷 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。classname solution description todo date 2019 12 22 12 36 author sonnsei public c...

38 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。示例 給定二叉樹 3,9,20,null,null,15,7 遞迴的方法,比較左邊路徑和右邊路徑哪邊最長,選擇最長的一邊路徑,加上root結點本身的長度。class solutio...