Python이 두 갈래 나무를 실현하는 흔한 반복 조작 총결산[7가지 방법]

2462 단어
본고는 파이썬이 두 갈래 나무를 실현하는 흔한 반복 조작을 실례로 서술하였다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다.
두 갈래 나무의 정의:

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 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기