二叉树进行先序遍历,并打印层号,并用cyu
时间: 2023-06-12 08:07:25 浏览: 121
对所建立的二叉树分别进行先序、中序和后序遍历,并输出结果。
4星 · 用户满意度95%
很高兴为您解答这个问题。以下是一个使用 Python 语言的示例代码,使用了递归方式实现了二叉树的先序遍历,并打印每个节点所在的层号。同时,使用了 Cython 进行加速。
```python
# 定义二叉树节点类
cdef class Node:
cdef public int val
cdef public Node* left
cdef public Node* right
def __init__(self, val):
self.val = val
self.left = NULL
self.right = NULL
# 递归实现先序遍历
cdef void preorder_traversal(Node* node, int level):
if node is not NULL:
print("level:", level, "value:", node.val)
preorder_traversal(node.left, level + 1)
preorder_traversal(node.right, level + 1)
# 定义二叉树根节点
cdef Node* root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
# 调用先序遍历函数
preorder_traversal(root, 1)
```
注意,为了使用 Cython 进行加速,需要将上述代码保存为 `.pyx` 文件,并使用 Cython 进行编译,生成对应的 `.so` 文件。具体的编译方式可以参考 Cython 的官方文档。
希望这个示例代码能够对您有所帮助。
阅读全文