您的位置:首页 > 编程语言

二叉树的几个基础遍历算法代码

2016-02-04 11:41 519 查看

先序遍历

# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
# @param root, a tree node
# @return a list of integers
def preorderTraversal(self, root):
stack = []
ret = []
while root or len(stack):
if root:
stack.append(root)
ret.append(root.val)
root = root.left
else:
root = stack.pop()
root = root.right
return ret


后序遍历

# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
# @param root, a tree node
# @return a list of integers
def postorderTraversal(self, root):
s=[]
ret=[]
s.append(root)
curTree=None
preTree=None
while 0 != len(s):
curTree=s[-1]
if None == curTree:
return ret
if( (None==curTree.left and None==curTree.right) or
(None != preTree and (preTree==curTree.left or preTree==curTree.right)) ):
ret.append(curTree.val)
s.pop()
preTree=curTree
else:
if None != curTree.right:
s.append(curTree.right)
if None != curTree.left:
s.append(curTree.left)

return ret


中序遍历

# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
# @param root, a tree node
# @return a list of integers
def inorderTraversal(self, root):
stack=[]
ret = []
while root or len(stack):
if root:
stack.append(root)
root=root.left
else:
tmp = stack.pop()
root = tmp.right
ret.append(tmp.val)
return ret
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树 遍历 算法