class TreeNode:
self.val = x
self.left = None
self.right = None
递归算法:
- 前序遍历二叉树
class Solution:
def preOrderTraverse(self, pRoot):
if not pRoot:
return
print(pRoot.val)
self.preOrderTraverse(root.left)
self.preOrderTraverse(root.right)
- 中序遍历二叉树
class Solution:
def inOrderTraverse(self, pRoot):
if not pRoot:
return
self.preOrderTraverse(root.left)
print(pRoot.val)
self.preOrderTraverse(root.right)
- 后序遍历二叉树
class Solution:
def postOrderTraverse(self, pRoot):
if not pRoot:
return
self.preOrderTraverse(root.left)
self.preOrderTraverse(root.right)
print(pRoot.val)
非递归算法:
- 前序遍历二叉树
class Solution:
def preOrderTraverse(self, pRoot):
if not pRoot:
return
node = pRoot
stack = []
while node or stack:
while node:
print(node.val)
stack.append(node)
node = node.left
node = stack.pop()
node = node.right
- 中序遍历二叉树
class Solution:
def preOrderTraverse(self, pRoot):
if not pRoot:
return
node = pRoot
stack = []
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
print(node.val)
node = node.right
- 后序遍历二叉树
class Solution:
def preOrderTraverse(self, pRoot):
if not pRoot:
return
node = pRoot
stack = []
res = []
while node or stack:
while node:
res.append(node.val)
stack.append(node)
node = node.right
node = stack.pop()
node = node.left
return res[::-1]