#二叉樹的插入,尋找。如果有就不用插入,如果沒有就插入
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...