写一个二叉树的遍历,有先序遍历,中序遍历,后序遍历,深度遍历
时间: 2023-07-12 11:48:36 浏览: 97
二叉树的遍历
以下是一个二叉树的遍历代码,包括先序遍历、中序遍历、后序遍历和深度优先遍历:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def preorderTraversal(root):
if root is None:
return []
res = []
res.append(root.val)
res += preorderTraversal(root.left)
res += preorderTraversal(root.right)
return res
def inorderTraversal(root):
if root is None:
return []
res = []
res += inorderTraversal(root.left)
res.append(root.val)
res += inorderTraversal(root.right)
return res
def postorderTraversal(root):
if root is None:
return []
res = []
res += postorderTraversal(root.left)
res += postorderTraversal(root.right)
res.append(root.val)
return res
def depthFirstSearch(root):
if root is None:
return []
stack = [root]
res = []
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
```
其中,先序遍历、中序遍历和后序遍历使用了递归的方式实现,深度优先遍历使用了栈的数据结构实现。
阅读全文