我的解法:
通过python自带的SortedList来解决排序问题
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def getAllElements(self, root1: TreeNode, root2: TreeNode) -> List[int]:
from sortedcontainers import SortedList
result=SortedList()
if root1:
last_list=[root1]
while(last_list):
node_list=[]
for each_node in last_list:
result.add(each_node.val)
if each_node.left is not None:
node_list.append(each_node.left)
if each_node.right is not None:
node_list.append(each_node.right)
last_list=node_list
if root2:
last_list=[root2]
while(last_list):
node_list=[]
for each_node in last_list:
result.add(each_node.val)
if each_node.left is not None:
node_list.append(each_node.left)
if each_node.right is not None:
node_list.append(each_node.right)
last_list=node_list
return result
标准解法:
遍历树之后,添加所有元素后再做一次总排序
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def getAllElements(self, root1: TreeNode, root2: TreeNode) -> List[int]:
ret=[]
def midorder(root,ret):
if root:
midorder(root.left,ret)
ret.append(root.val)
midorder(root.right,ret)
midorder(root1,ret)
midorder(root2,ret)
ret.sort()
return ret