python은 두 갈래 트리의 앞뒤 순서를 차원 순서대로 반복합니다. 귀속과 비귀속
6919 단어 컴퓨터 기반
앞의 순서가 두루 미치다.
# ------ coding:utf-8 -------
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def pre_order_recursive(root_node):
if not root_node:
return
print root_node.val
pre_order_recursive(root_node.left)
pre_order_recursive(root_node.right)
def pre_order_non_recursive(root_node):
if not root_node:
return
node_stack = []
node = root_node
while node_stack or node:
# ,
while node:
print node.val
node_stack.append(node)
node = node.left
# while node ,
node = node_stack.pop()
#
node = node.right
중순으로 두루 다니다.
# ------ coding:utf-8 -------
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def mid_order_recursive(root_node):
if not root_node:
return
mid_order_recursive(root_node.left)
print root_node.val
mid_order_recursive(root_node.right)
def mid_order_non_recursive(root_node):
if not root_node:
return
node_stack = []
node = root_node
while node_stack or node:
# ,
while node:
node_stack.append(node)
node = node.left
# while node ,
node = node_stack.pop()
print node.val
#
node = node.right
후순이 두루 다니다
# ------ coding:utf-8 -------
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def post_order_recursive(root_node):
if not root_node:
return
post_order_recursive(root_node.left)
post_order_recursive(root_node.right)
print root_node.val
def post_order_non_recursive(root_node):
if not root_node:
return
stack1 = [root_node]
stack2 = []
while stack1:
# while , stack2
node = stack1.pop()
if node.left:
stack1.append(node.left)
if node.right:
stack1.append(node.right)
stack2.append(node)
while stack2:
print stack2.pop().val
차례차례
# ------ coding:utf-8 -------
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def level_order(root_node):
if not root_node:
return
node_queue = [root_node]
while node_stack:
# python list pop , , pop ,
node = node_queue.pop(0)
print node.val
if node.left:
node_queue.append(node.left)
if node.right:
node_queue.append(node.right)
Reference
https://blog.yangx.site/2016/07/22/Python-binary-tree-traverse/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python은 두 갈래 트리의 앞뒤 순서를 차원 순서대로 반복합니다. 귀속과 비귀속Reference https://blog.yangx.site/2016/07/22/Python-binary-tree-traverse/...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.