国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現二叉樹的常見遍歷操作總結【7種方法】

2020-01-04 13:35:24
字體:
來源:轉載
供稿:網友

本文實例講述了Python實現二叉樹的常見遍歷操作。分享給大家供大家參考,具體如下:

二叉樹的定義:

class TreeNode:  def __init__(self, x):    self.val = x    self.left = None    self.right = None

二叉樹的前序遍歷

遞歸

def preorder(root,res=[]):  if not root:    return   res.append(root.val)  preorder(root.left,res)  preorder(root.right,res)  return res

迭代

def preorder(root):  res=[]  if not root:     return []  stack=[root]  while stack:    node=stack.pop()    res.append(node.val)    if node.right:      stack.append(node.right)    if node.left:      stack.append(node,left)  return res

二叉樹的中序遍歷

遞歸

def inorder(root,res=[]):  if not root:    return   inorder(root.left,res)  res.append(root.val)  inorder(root.right,res)  return res

迭代

def inorder(root):  stack=[]  node=root  res=[]  while stack or node:    while node:      stack.append(node)      node=node.left    node=stack.pop()    res.append(node.val)    node=node.right  return res

二叉樹的后序遍歷

遞歸

def laorder(root,res=[]):  if not root:    return   laorder(root.left,res)  laorder(root.right,res)  res.append(root.val)  return res

迭代

def laorder(root):  stack=[root]  res=[]  while stack:    node=stack.pop()    if node.left:      stack.append(node.left)    if node.right:      stack.append(node.right)    res.append(node.val)  return res[::-1]

二叉樹的層次遍歷

迭代

def levelorder(root):  queue=[root]  res=[]  while queue:    node=queue.pop(0)    if node.left:       queue.append(node.left)    if node.right:      queue.append(node.right)    res.append(node.val)  return res

 

希望本文所述對大家Python程序設計有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 达拉特旗| 太康县| 汽车| 昭苏县| 金华市| 太保市| 自贡市| 新建县| 防城港市| 遂平县| 福贡县| 喀喇| 樟树市| 梁山县| 洪泽县| 方山县| 措勤县| 正阳县| 图木舒克市| 新民市| 新源县| 达拉特旗| 中江县| 那曲县| 桂林市| 大名县| 沁水县| 东兴市| 西藏| 江口县| 礼泉县| 毕节市| 武义县| 楚雄市| 封开县| 海原县| 武强县| 利津县| 武胜县| 富平县| 台北市|