• LeetCode 993. Cousins in Binary Tree(判断结点是否为Cousin)


    993. Cousins in Binary Tree

    In a binary tree, the root node is at depth 0, and children of each depth knode 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 yare 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

    思路:

    求解x,y的深度和父亲结点,如果深度一样,父亲结点不同,就是true;否则,就是false。

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode *getDepth(TreeNode* root, int val, int depth, int &level)
        {
            if (!root) return nullptr;
            
            //找到val的父亲,并设置val的depth
            if ((root->left && root->left->val == val) || (root->right && root->right->val == val))
            {
                level = depth;
                return root;
            }
    
            TreeNode *left = getDepth(root->left, val, depth + 1, level);
            if (left) return left;
    
            TreeNode *right = getDepth(root->right, val, depth + 1, level);
            if (right) return right;
    
            return nullptr;
        }
    
        bool isCousins(TreeNode *root, int x, int y)
        {
            int x_depth = -1, y_depth = -1;
            TreeNode *x_parent = getDepth(root, x, 0, x_depth);
            TreeNode *y_parent = getDepth(root, y, 0, y_depth);
            if (x_depth == y_depth  && x_parent != y_parent)
            {
                return true;
            }
            return false;
        }
    };

  • 相关阅读:
    t-SNE可视化(MNIST例子)
    numpy得到数组的index
    Latex的各种帽子
    Mac OSX安装 GitLab 5.x
    yii2 关系...
    基于git的源代码管理模型——git flow
    spl_autoload_register
    如何創建一個自己的 Composer/Packagist 包 (PHP)
    正则表达式语法
    sublime php插件
  • 原文地址:https://www.cnblogs.com/douzujun/p/10922786.html
Copyright © 2020-2023  润新知