zoukankan      html  css  js  c++  java
  • LeetCode 993. Cousins in Binary Tree

    原题链接在这里:https://leetcode.com/problems/cousins-in-binary-tree/

    题目:

    In a binary tree, the root node is at depth 0, and children of each depth k node are at depth k+1.

    Two nodes of a binary tree are cousins if they have the same depth, but have different parents.

    We are given the root of a binary tree with unique values, and the values x and y of two different nodes in the tree.

    Return true if and only if the nodes corresponding to the values x and y are cousins.

    Example 1:

    Input: root = [1,2,3,4], x = 4, y = 3
    Output: false
    

    Example 2:

    Input: root = [1,2,3,null,4,null,5], x = 5, y = 4
    Output: true
    

    Example 3:

    Input: root = [1,2,3,null,4], x = 2, y = 3
    Output: false

    Note:

    1. The number of nodes in the tree will be between 2 and 100.
    2. Each node has a unique integer value from 1 to 100.

    题解:

    Perform level order tranersal.

    When polling the current node, if its left and right child are not null and they equal to x and y, then x and y are sibling, not cousins, return false.

    Have two boolean value mark if x is found and y is found. If bouth found on the same level, return true.

    Time Complexity: O(n).

    Space: O(n).

    AC Java:

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 class Solution {
    11     public boolean isCousins(TreeNode root, int x, int y) {
    12         if(root == null){
    13             return false;
    14         }
    15         
    16         LinkedList<TreeNode> que = new LinkedList<>();
    17         que.add(root);
    18         
    19         while(!que.isEmpty()){
    20             int size = que.size();
    21             boolean xFound = false;
    22             boolean yFound = false;
    23             
    24             while(size-- > 0){
    25                 TreeNode cur = que.poll();
    26                 if(cur.val == x){
    27                     xFound = true;
    28                 }
    29                 
    30                 if(cur.val == y){
    31                     yFound = true;
    32                 }
    33                 
    34                 if(cur.left != null && cur.right != null){
    35                     if(cur.left.val == x && cur.right.val == y){
    36                         return false;
    37                     }
    38                     
    39                     if(cur.left.val == y && cur.right.val == x){
    40                         return false;
    41                     }
    42                 }
    43                 
    44                 if(cur.left != null){
    45                     que.add(cur.left);
    46                 }
    47                 
    48                 if(cur.right != null){
    49                     que.add(cur.right);
    50                 }
    51             }
    52             
    53             if(xFound && yFound){
    54                 return true;
    55             }
    56         }
    57         
    58         return false;
    59     }
    60 }
  • 相关阅读:
    [APM] OneAPM 云监控部署与试用体验
    Elastic Stack 安装
    xBIM 综合使用案例与 ASP.NET MVC 集成(一)
    JQuery DataTables Selected Row
    力导向图Demo
    WPF ViewModelLocator
    Syncfusion SfDataGrid 导出Excel
    HTML Table to Json
    .net core 2.0 虚拟目录下载 Android Apk 等文件
    在BootStrap的modal中使用Select2
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/12325305.html
Copyright © 2011-2022 走看看