创建一棵二叉树,对其实现先序、中序、后序遍历,用代码实现
时间: 2024-05-06 07:16:19 浏览: 11
好的,以下是 Python 代码实现:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, val):
if self.root is None:
self.root = TreeNode(val)
else:
self._insert(val, self.root)
def _insert(self, val, node):
if val < node.val:
if node.left is None:
node.left = TreeNode(val)
else:
self._insert(val, node.left)
else:
if node.right is None:
node.right = TreeNode(val)
else:
self._insert(val, node.right)
def preorder(self):
if self.root is None:
return []
else:
return self._preorder(self.root, [])
def _preorder(self, node, res):
if node is not None:
res.append(node.val)
self._preorder(node.left, res)
self._preorder(node.right, res)
return res
def inorder(self):
if self.root is None:
return []
else:
return self._inorder(self.root, [])
def _inorder(self, node, res):
if node is not None:
self._inorder(node.left, res)
res.append(node.val)
self._inorder(node.right, res)
return res
def postorder(self):
if self.root is None:
return []
else:
return self._postorder(self.root, [])
def _postorder(self, node, res):
if node is not None:
self._postorder(node.left, res)
self._postorder(node.right, res)
res.append(node.val)
return res
```
上面的代码定义了一个 `TreeNode` 类来表示二叉树的节点,以及一个 `BinaryTree` 类来表示整个二叉树。其中,`insert` 方法用于向二叉树中添加节点,`preorder`、`inorder` 和 `postorder` 方法分别实现了先序、中序和后序遍历。这些方法都是私有的,因为它们需要递归地遍历整个二叉树,而外部用户只需要调用公有的方法即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)