日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python非递归前序遍历二叉树_LintCode66:二叉树的前序遍历(python)

發布時間:2024/1/23 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python非递归前序遍历二叉树_LintCode66:二叉树的前序遍历(python) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

66. 二叉樹的前序遍歷

給出一棵二叉樹,返回其節點值的前序遍歷。

樣例

樣例 1:

輸入:{1,2,3}

輸出:[1,2,3]

解釋:

1

/ \

2 3

它將被序列化為{1,2,3}

前序遍歷

樣例 2:

輸入:{1,#,2,3}

輸出:[1,2,3]

解釋:

1

\

2

/

3

它將被序列化為{1,#,2,3}

前序遍歷

挑戰

你能使用非遞歸實現么?

注意事項

首個數據為根節點,后面接著是其左兒子和右兒子節點值,"#"表示不存在該子節點。

節點數量不超過20

前序遍歷,就是先找根節點的值,再找左兒子節點的值,等所有左子兒子的值遍歷以后,再遍歷右兒子的子(即遍歷所有的左兒子節點的值后再遍歷右兒子節點的值)。

"""

這是使用遞歸法實現

Definition of TreeNode:

class TreeNode:

def __init__(self, val):

self.val = val

self.left, self.right = None, None

"""

class Solution:

"""

@param root: A Tree

@return: Preorder in ArrayList which contains node values.

"""

def preorderTraversal(self, root):

# write your code here

if root is None:

return []

re = [root.val]

if root.left is not None:

re = re + self.preorderTraversal(root.left)

if root.right is not None:

re = re + self.preorderTraversal(root.right)

return re

在網上找了一下使用非遞歸方法進行遍歷,利用了棧的方法進行循環遍歷。之前不太知道棧是什么,看了一下以后,貌似有了了解。

"""

Definition of TreeNode:

class TreeNode:

def __init__(self, val):

this.val = val

this.left, this.right = None, None

"""

class Solution:

"""

@param root: The root of binary tree.

@return: Preorder in list which contains node values.

"""

def preorderTraversal(self, root):

if root is None:

return []

stack = [root]

preorder = []

while stack:

node = stack.pop()

preorder.append(node.val)

if node.right:

stack.append(node.right)

if node.left:

stack.append(node.left)

return preorder

總結

以上是生活随笔為你收集整理的python非递归前序遍历二叉树_LintCode66:二叉树的前序遍历(python)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。