• Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)


    671. 二叉树中第二小的节点

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

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

    示例 1:

    输入: 
        2
       / 
      2   5
         / 
        5   7
    
    输出: 5
    

    说明: 最小的值是 2 ,第二小的值是 5 。
    示例 2:

    输入: 
        2
       / 
      2   2
    
    输出: -1
    

    说明: 最小的值是 2, 但是不存在第二小的值。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
         public int findSecondMinimumValue(TreeNode root) {
            if(root == null){
                return -1;
            }
            Queue<TreeNode> queue = new LinkedList<>();
            queue.add(root);
            int res = 2147483647;
            int flag = 0;
            while(queue.size() != 0){
                for(int i = 0;i < queue.size();i++){
                TreeNode node = queue.poll();
                if(node.val != root.val){
                    res = Math.min(res,node.val);
                }
                if(node.val == 2147483647){
                    flag = 1;
                }
                
                if(node.left != null){
                    queue.add(node.left);
                }
                if(node.right != null){
                    queue.add(node.right);
                }    
            }
            }
            if(res == 2147483647 && flag == 0){
                return -1;
            }
            return res;
        }
    }
    
  • 相关阅读:
    OpenCV+iOS开发使用文档
    Mac下OpenCV开发
    vs2010+cuda5.0+qt4.8
    对于基类添加虚析构函数问题
    PMVS学习中学习c++
    解决ubuntu上opengl的问题
    js中const,var,let区别
    phpstorm 快捷键
    Chrome 控制台console的用法
    【PHP】进一法取整、四舍五入取整、忽略小数等的取整数方法大全
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074820.html
Copyright © 2020-2023  润新知