通行证
- 积分
- 601
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-1-24
- 最后登录
- 1970-1-1
|
- public class Solution {
- public TreeNode onetree(Set<TreeNode> set) {
- Set<TreeNode> candidate = new HashSet<>(set);
- for (TreeNode tn : set) {
- if (tn.left != null) {
- candidate.remove(tn.left);
- }
- if (tn.right != null) {
- candidate.remove(tn.right);
- }
- }
- for (TreeNode root : candidate) {
- Set<TreeNode> nodes = new HashSet<>(set);
- Deque<TreeNode> queue = new ArrayDeque<>();
- queue.offer(root);
- nodes.remove(root);
- while (!queue.isEmpty()) {
- TreeNode tn = queue.poll();
- if (tn.left != null) {
- queue.offer(tn.left);
- nodes.remove(tn.left);
- }
- if (tn.right != null) {
- queue.offer(tn.right);
- nodes.remove(tn.right);
- }
- }
- if (nodes.isEmpty())
- return root;
- }
- return null;
- }
- public static void main(String[] args) {
- Solution s = new Solution();
- TreeNode tn1 = new TreeNode(1);
- TreeNode tn2 = new TreeNode(2);
- TreeNode tn3 = new TreeNode(3);
- TreeNode tn4 = new TreeNode(4);
- TreeNode tn5 = new TreeNode(5);
- TreeNode tn6 = new TreeNode(6);
- TreeNode tn7 = new TreeNode(7);
- tn1.left = tn2;
- tn1.right = tn3;
- tn2.right = tn4;
- tn5.left = tn6;
- tn5.right = tn7;
- Set<TreeNode> set1 = new HashSet<>();
- set1.add(tn1);
- set1.add(tn2);
- set1.add(tn3);
- set1.add(tn4);
- Set<TreeNode> set2 = new HashSet<>();
- set2.add(tn1);
- set2.add(tn2);
- set2.add(tn3);
- set2.add(tn4);
- set2.add(tn5);
- set2.add(tn6);
- set2.add(tn7);
- System.out.println(s.onetree(set1).equals(tn1));
- System.out.println(s.onetree(set2) == null);
- }
- }
复制代码 |
|