酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

Python 实现二叉树左右翻转及先序遍历输出,附代码与注意点

以下是使用 Python 实现的代码: ```python class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def build_tree(nodes, d): root = TreeNode(nodes[0][0]) queue = [root] index = 1 for i in range(1, d): new_queue = [] for node in queue: if index < len(nodes[i]): left_val = nodes[i][index] if left_val!= -1: node.left = TreeNode(left_val) new_queue.append(node.left) index += 1 if index < len(nodes[i]): right_val = nodes[i][index] if right_val!= -1: node.right = TreeNode(right_val) new_queue.append(node.right) index += 1 queue = new_queue return root def reverse_tree(root): if root is None: return root.left, root.right = root.right, root.left reverse_tree(root.left) reverse_tree(root.right) def preorder_traversal(root): if root is not None: print(root.val, end=' ') preorder_traversal(root.left) preorder_traversal(root.right) t = int(input()) for _ in range(t): n, d = map(int, input().split()) nodes = [] for _ in range(d): nodes.append(list(map(int, input().split()))) root = build_tree(nodes, d) reverse_tree(root) preorder_traversal(root) print() ``` 需要注意的逻辑点: 1. 构建树的过程中,要正确处理节点不存在的情况。 2. 翻转树时,要确保左右子树完全交换。 3. 先序遍历输出时,注意控制最后的空格。 ######[AI写代码神器 | 452点数解答 | 2024-12-02 09:49:52]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]