定义二叉树建立函数建立一棵二叉树python
时间: 2023-07-07 22:46:29 浏览: 105
好的,以下是一个简单的Python代码,用于定义并建立一棵二叉树:
```python
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
def build_tree():
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
return root
```
在这里,我们定义了一个名为`Node`的类,它有三个属性:`left`、`right`和`data`。然后,我们定义了一个名为`build_tree`的函数,它创建并返回一棵二叉树。具体而言,这棵二叉树包含五个节点,它们的值分别为1、2、3、4和5,它们之间的关系如下图所示:
```
1
/ \
2 3
/ \
4 5
```
你可以根据自己的需要修改此代码,以便创建适合你数据结构问题的二叉树。
相关问题
1) 定义二叉树建立函数 createBT(self,Root),建立一棵二叉树; 2) 定义递归函数preOrder(self, Root),输出二叉树的先序遍历序列; 3) 定义递归函数postOrder(self, Root),输出二叉树的中序遍历序列; 4) 定义递归函数middleOrder(self, Root),输出二叉树的后序遍历序列; 5) 定义函数levelOrder(self, Root),输出二叉树的层次遍历。 6) 参照层次遍历函数,定义一个新函数 findBt(self, Root, x),输入一个指定的字符x,在指定的一棵二叉树中查找值为x的结点,如果查找成功,则输出“OK”,否则输出“ERROR”; 7) 参照层次遍历函数,定义一个新函数countNode(self, Root),求二叉树的节点个数; 8) 参照层次遍历函数,定义一个新函数countLeafNode(self, Root),求二叉树的叶子节点的个数。 9) 定义和执行主函数 main( ),在主函数中,依次调用上面8个函数,实现二叉树的创建、遍历、节点查找、节点统计等。 用Python实现上面的要求
这是一个和之前类似的问题,不过有一个小错误,第 4 个要求应该是输出二叉树的后序遍历序列,而不是中序遍历序列。以下是修改后的 Python 代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class BinaryTree:
def createBT(self, Root):
val = input()
if val == '#':
Root = None
else:
Root = TreeNode(val)
Root.left = self.createBT(Root.left)
Root.right = self.createBT(Root.right)
return Root
def preOrder(self, Root):
if not Root:
return
print(Root.val)
self.preOrder(Root.left)
self.preOrder(Root.right)
def postOrder(self, Root):
if not Root:
return
self.postOrder(Root.left)
self.postOrder(Root.right)
print(Root.val)
def middleOrder(self, Root):
if not Root:
return
self.middleOrder(Root.left)
print(Root.val)
self.middleOrder(Root.right)
def levelOrder(self, Root):
if not Root:
return
queue = [Root]
while queue:
node = queue.pop(0)
print(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
def findBt(self, Root, x):
if not Root:
return False
if Root.val == x:
return True
return self.findBt(Root.left, x) or self.findBt(Root.right, x)
def countNode(self, Root):
if not Root:
return 0
return 1 + self.countNode(Root.left) + self.countNode(Root.right)
def countLeafNode(self, Root):
if not Root:
return 0
if not Root.left and not Root.right:
return 1
return self.countLeafNode(Root.left) + self.countLeafNode(Root.right)
if __name__ == '__main__':
bt = BinaryTree()
Root = None
print("请输入树的结点值,用'#'代表空结点:")
Root = bt.createBT(Root)
print("先序遍历:")
bt.preOrder(Root)
print("后序遍历:")
bt.postOrder(Root)
print("中序遍历:")
bt.middleOrder(Root)
print("层次遍历:")
bt.levelOrder(Root)
x = input("请输入要查找的结点值:")
if bt.findBt(Root, x):
print("OK")
else:
print("ERROR")
print("结点个数:", bt.countNode(Root))
print("叶子结点个数:", bt.countLeafNode(Root))
```
在主函数中,我们首先创建 BinaryTree 对象,然后调用 createBT() 函数建立二叉树,再依次调用 preOrder()、postOrder()、middleOrder()、levelOrder() 函数进行遍历输出。接着,我们输入要查找的结点值,调用 findBt() 函数进行查找。最后,我们调用 countNode() 和 countLeafNode() 函数分别统计二叉树的结点个数和叶子结点个数。
python二叉树函数
以下是一个用 Python 实现二叉树操作的示例函数```python
class TreeNode:
def __init__(self, value):
self.val = value
self.left = None
self.right = None
def insert(root, value):
if root is None:
return TreeNode(value)
else:
if value < root.val:
root.left = insert(root.left, value)
else:
root.right = insert(root.right, value)
return root
def search(root, value):
if root is None or root.val == value:
return root
if value < root.val:
return search(root.left, value)
return search(root.right, value)
def delete(root, value):
if root is None:
return root
if value < root.val:
root.left = delete(root.left, value)
elif value > root.val:
root.right = delete(root.right, value)
else:
if root.left is None:
temp = root.right
root = None
return temp
elif root.right is None:
temp = root.left
root = None
return temp
temp = minValueNode(root.right)
root.val = temp.val
root.right = delete(root.right, temp.val)
return root
def minValueNode(node):
current = node
while current.left is not None:
current = current.left
return current
def inorderTraversal(root):
if root is not None:
inorderTraversal(root.left)
print(root.val, end=' ')
inorderTraversal(root.right)
```
这些函数实现了二叉树的基本操作,包括插入节点、搜索节点、删除节点和中序遍历等。你可以根据需要使用这些函数来操作二叉树。
阅读全文