獲取 兩棵二叉搜尋樹中的所有元素,並公升序排列

2021-10-01 19:15:21 字數 2957 閱讀 3509

解題參考:二叉樹的實現和三種遍歷:前序、中序、後序

第一次參加力扣競賽,用firefox 71.0竟然找不到提交按鈕,真實怪哉。之前普通刷題的時候還是ok的呢。

在此之前對「樹」這種資料結構的認識僅限於課堂、書本上,腦子裡只有樹形結構那種概念,具體怎麼在python中實現還沒來得及了解。今天算是正式認識了。

一棵典型的二叉樹應包括至少三個結點:父結點和兩個子節點,那麼在程式中定義樹的時候每次就應該定義父結點和左右兩個子結點的值,如下:

# definition for a binary tree node.

class

treenode

:def

__init__

(self, value=

none

, left=

none

, right=

none

):

self.value=value

self.left=left # 左子樹

self.right=right # 右子樹

一直用著python語言,但以面向過程的方式程式設計,畢竟就快速實現乙個演算法而言,還是面向過程更直觀嘛(據說物件導向的優點是便於維護),但leetcode中模板都是直接上類了,估計不用不行。

首先,類中的函式一般叫做方法,我這裡先不加嚴格區別。

例子如下,類中有三個函式,如果想再printtotal()函式中呼叫另外兩個函式printnameage()和printschool(), 就需要以類的例項化self呼叫兩個方法,並且在呼叫方法的時候不加self引數,如果有其他實參需要加上。

其實,和在類外呼叫類中的函式一樣,都是用類的例項化來呼叫類中的方法,並且呼叫的時候都不加self引數。只不過在類外時,類的例項化是stu = stu();而在類內時,類的例項化簡單地用self即可

# 教程 

class

stu:

# __init__初始化函式有兩個實參,表明在例項化類的時候需要兩個引數

def__init__

(self, name=

none

, age=

none):

self.name = name

self.age = age

self.school =

"中國大學"

defprintnameage

(self)

:print

("我叫{}, 今年{}"

.format

(self.name, self.age)

)def

printschool

(self)

:print

("來自"

, self.school)

defprinttotal

(self)

: self.printnameage(

) self.printschool(

)

stu = stu(

'小明',14

)stu.printtotal(

)

學會上兩個知識點之後,答案也就出來了。

# definition for a binary tree node.

class

treenode

:def

__init__

(self, value=

none

, left=

none

, right=

none

):

self.value=value

self.left=left # 左子樹

self.right=right # 右子樹

class

solution

:def

__init__

(self)

: self.roots =

defgetelements

(self, root)

:if root==

none

:return

else

: self.getelements(root.left)

self.getelements(root.right)

defgetallelements

(self, root1, root2)

: self.getelements(root1)

self.getelements(root2)

self.roots.sort(

)return self.roots

if __name__ ==

'__main__'

: root1 = treenode(

5, treenode(2)

, treenode(3)

) root2 = treenode(

5, treenode(

4, treenode(2)

, treenode(3)

), treenode(

1, right=treenode(2)

))solution = solution(

) roots = solution.getallelements(root1, root2)

print

(roots)

兩棵二叉搜尋樹中的所有元素

給你 root1 和 root2 這兩棵二叉搜尋樹。請你返回乙個列表,其中包含 兩棵樹 中的所有整數並按 公升序 排序。示例 1 輸入 root1 2,1,4 root2 1,0,3 輸出 0,1,1,2,3,4 示例 2 輸入 root1 0,10,10 root2 5,1,7,0,2 輸出 10...

LeetCode 兩棵二叉搜尋樹的所有元素

題目鏈結 1305 給你root1和root2這兩棵二叉搜尋樹。請你返回乙個列表,其中包含 兩棵樹 中的所有整數並按 公升序 排序。示例 輸入 root1 2,1,4 root2 1,0,3 輸出 0,1,1,2,3,4 輸入 root1 0,10,10 root2 5,1,7,0,2 輸出 10,...

1305 兩棵二叉搜尋樹中的所有元素(C )

給你 root1 和 root2 這兩棵二叉搜尋樹。請你返回乙個列表,其中包含 兩棵樹 中的所有整數並按 公升序 排序。示例 1 輸入 root1 2,1,4 root2 1,0,3 輸出 0,1,1,2,3,4 示例 2 輸入 root1 0,10,10 root2 5,1,7,0,2 輸出 10...