使用 Python 中的方向列表遍历二叉树的程序

pythonserver side programmingprogramming更新于 2026/2/4 15:08:17

假设我们有一个二叉树和一个由"R"(右)、"L"(左)和"U"(上)组成的字符串移动列表。从根开始,我们必须通过执行每个移动来遍历树,其中:"R"表示遍历到右子节点。"L"表示遍历到左子节点。"U"表示遍历到其父节点。

因此,如果输入如下

["R","R","U","L"],则输出为 3

要解决这个问题,我们将遵循以下步骤 −

  • past := a new list

  • 对于 moves 中的每个 move,执行

    • 在 past 末尾插入 root

    • 如果 move 与"L",则

      • root := 根的左边

    • 否则,当移动与 "R" 相同时,则

      • root := 根的右边

    • 否则,

      • 从过去中删除最后一个元素

      • root := 过去的最后一个元素并从过去中删除它

  • 返回 root 的值

让我们看看下面的实现以便更好地理解 −

示例

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.val = data
      self.left = left
      self.right = right
class Solution:
   def solve(self, root, moves):
      past = []
      for move in moves:
         past.append(root)
         if move == "L":
            root = root.left
         elif move == "R":
            root = root.right
         else:
            past.pop()
            root = past.pop()
      return root.val
ob = Solution()
root = TreeNode(2)
root.right = TreeNode(4)
root.right.left = TreeNode(3)
root.right.right = TreeNode(5)
traverse = ["R","R","U","L"]
print(ob.solve(root, traverse))

输入

root = TreeNode(2) root.right = TreeNode(4) root.right.left =
TreeNode(3) root.right.right = TreeNode(5) ["R","R","U","L"]

输出

3

相关文章


有用资源