用 Python 将链表转换为锯齿形二叉树的程序
pythonserver side programmingprogramming
假设我们有一个单链表,我们必须使用以下规则将其转换为二叉树路径 −
- 链表的头部是根。
- 每个后续节点在其值较小时是父节点的左子节点,否则将是右子节点。
因此,如果输入为 [2,1,3,4,0,5],则输出将是

为了解决这个问题,我们将遵循以下步骤−
- 定义一个函数solve()。这将获取节点
- 如果节点为空,则
- 返回空
- 根:=创建一个值与节点值相同的树节点
- 如果节点的下一个不为空,则
- 如果节点的下一个值<节点的值,则
- 根的左侧:=solve(节点的下一个)
- 否则,
- 根的右侧:=solve(节点的下一个)
- 如果节点的下一个值<节点的值,则
- 返回根
让我们看看下面的实现以便更好地理解 −
示例
class ListNode: def __init__(self, data, next = None): self.val = data self.next = next def make_list(elements): head = ListNode(elements[0]) for element in elements[1:]: ptr = head while ptr.next: ptr = ptr.next ptr.next = ListNode(element) return head class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right def print_tree(root): if root is not None: print_tree(root.left) print(root.data, end = ', ') print_tree(root.right) class Solution: def solve(self, node): if not node: return None root = TreeNode(node.val) if node.next: if node.next.val < node.val: root.left = self.solve(node.next) else: root.right = self.solve(node.next) return root ob = Solution() L = make_list([2,1,3,4,0,5]) print_tree(ob.solve(L))
输入
[2,1,3,4,0,5]
输出
1, 3, 0, 5, 4, 2,
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

