• Leetcode671.Second Minimum Node In a Binary Tree二叉树中的第二小结点


    给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 

    给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。

    题目应该少说了树的节点值都是大于等于0的

    class Solution {
    public:
        int findSecondMinimumValue(TreeNode* root) {
            if(root == NULL)
                return -1;
            int x = GetAns(root ->left, root ->val);
            int y = GetAns(root ->right, root ->val);
            if(x == -1 && y == -1)
            {
                return -1;
            }
            else if(y == -1)
            {
                return x;
            }
            else if(x == -1)
            {
                return y;
            }
            return min(x, y);
        }
    
        int GetAns(TreeNode* root, int k)
        {
            if(root == NULL)
                return -1;
            if(root ->val != k)
                return root ->val;
            else
            {
                int x = GetAns(root ->left, k);
                int y = GetAns(root ->right, k);
                if(x == -1 && y == -1)
                {
                    return -1;
                }
                else if(y == -1)
                {
                    return x;
                }
                else if(x == -1)
                {
                    return y;
                }
                return min(x, y);
            }
        }
    };
  • 相关阅读:
    C语言指针入门
    c的动态内存管理
    汇编入门基础与helloworld
    汇编1
    汇编2——完整的例子集合
    算法与数据结构——选择,插入,希尔排序
    MySQL
    MySQL 笔记
    CSS样式优先级
    GIT使用笔记
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10434036.html
Copyright © 2020-2023  润新知