问题Leetcode给定一棵二叉树,根节点为第一层,深度为1,在其第d层追加一行值为v的节点。加法规则:给定一个深度值d(正整数),对每个深度为d-1层的非空节点N,分别为N创建两棵值为v的左右子树。将N的原始左子树连接到新节点v的左子树;将N原来的右子树连接到新节点v的右子树,如果d的值为1,深度d-1不存在,则创建一个新的根节点v,将使用原来的整棵树作为v的左子树例1:输入:二叉树如下:4/\26/\/315v=1d=2输出:4/\11/\26/\/315例2:输入:二叉树如下图所示:4/2/\31v=1d=3输出:4/2/\11/\31注:输入深度值d的取值范围为:[1,二叉树的最大深度+1]。输入二叉树至少有一个节点。思路递归d=1:将原来整棵树作为v的左子树d=2:将左子树连接到新的左节点的左子树,将右子树连接到新的右节点的右孩子d>2上树:分解代码Python3#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方法:defaddOneRow(self,root:TreeNode,v:int,d:int)->TreeNode:ifnotroot:return#使用原来整棵树作为v的左子树ifd==1:node=TreeNode(v)node.left=rootreturnnodeifd==2:#新的左节点L=TreeNode(v)#新的右节点R=TreeNode(v)L.left=root.leftR.right=root.rightroot.left=Lroot.right=Rreturnroot#d>2不断分解self.addOneRow(root.left,v,d-1)self.addOneRow(root.right,v,d-1)returnrootlinkgithub
