如何用Python实现buildTree方法从含'N'的父数组构建二叉树
层序构造含空节点二叉树的Python实现
以下代码完全对齐提供的C++实现逻辑,支持输入空格分隔的节点值字符串,N代表空节点,返回构造完成的二叉树根节点:
1. 二叉树节点定义
class Node: def __init__(self, val): self.data = val self.left = None self.right = None
2. 层序构造二叉树实现
from collections import deque def buildTree(s: str): # 边界情况处理:空字符串或根节点为空直接返回 if not s or s[0] == 'N': return None # 按空格拆分输入字符串得到节点值列表 ip = s.split() # 初始化根节点并入队 root = Node(int(ip[0])) queue = deque([root]) i = 1 while queue and i < len(ip): curr_node = queue.popleft() curr_val = ip[i] # 构造左子节点 if curr_val != 'N': curr_node.left = Node(int(curr_val)) queue.append(curr_node.left) i += 1 if i >= len(ip): break curr_val = ip[i] # 构造右子节点 if curr_val != 'N': curr_node.right = Node(int(curr_val)) queue.append(curr_node.right) i += 1 return root
使用示例
输入字符串 "3 9 20 N N 15 7" 即可构造对应二叉树,逻辑与C++版本完全一致。
内容的提问来源于stack exchange,提问作者Rajdeep
相关产品推荐
相关产品推荐

