zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    JS学习专辑(3) DOM
    JS学习专辑(4) 变量作用域和语句
    JS学习专辑(6) 函数
    JS学习专辑(2) BOM
    WPF Adorner学习(1)
    C# 递归
    IEnumerable和IEnumerator
    C# 索引器
    JS学习专辑(5) 对象和数组
    JS学习专辑(1) 入门
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075200.html
Copyright © 2011-2022 走看看