[关闭]
@Lin-- 2020-02-24T14:00:00.000000Z 字数 932 阅读 400

getAllElements

Leetcode


题意:输入两颗搜索树,然后输出一个数组,要求对这两个数的所有节点值排序后升序。
解题思路:由于给定的是二叉搜索树,所以对其中序遍历,便可以得到一棵树的升序数组。
然后利用归并排序的思想,将两个数组合二为一。

  1. '''
  2. # File: getAllElements.py
  3. # Author: 0HP
  4. # Date: 20200223
  5. # Purpose: solve the problem in website:
  6. # https://leetcode.com/problems/all-elements-in-two-binary-search-trees/
  7. '''
  8. # Definition for a binary tree node.
  9. class TreeNode:
  10. def __init__(self, x):
  11. self.val = x
  12. self.left = None
  13. self.right = None
  14. class Solution:
  15. def Inorder(self,root:TreeNode,l:list):
  16. if root==None:
  17. return
  18. self.Inorder(root.left,l)
  19. l.append(root.val)
  20. self.Inorder(root.right,l)
  21. def MergeSort(self,l1:list,l2:list):
  22. l1size,l2size=len(l1),len(l2)
  23. result=[]
  24. i,j=0,0
  25. while i<l1size and j<l2size:
  26. if l1[i]<l2[j]:
  27. result.append(l1[i])
  28. i+=1
  29. else:
  30. result.append(l2[j])
  31. j+=1
  32. while i<l1size:
  33. result.append(l1[i])
  34. i+=1
  35. while j<l2size:
  36. result.append(l2[j])
  37. j+=1
  38. return result
  39. def getAllElements(self, root1: TreeNode, root2: TreeNode) -> List[int]:
  40. r1,r2=[],[]
  41. self.Inorder(root1,r1)
  42. self.Inorder(root2,r2)
  43. return self.MergeSort(r1,r2)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注