zoukankan      html  css  js  c++  java
  • Leetcode199二叉树的右视图(宽搜)

    问题描述

    给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

    示例

    输入: [1,2,3,null,5,null,4]
    输出: [1, 3, 4]
    解释:
    
       1            <---
     /   
    2     3         <---
          
      5     4       <---
    

    代码

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode() {}
     *     TreeNode(int val) { this.val = val; }
     *     TreeNode(int val, TreeNode left, TreeNode right) {
     *         this.val = val;
     *         this.left = left;
     *         this.right = right;
     *     }
     * }
     */
    class Solution {
        public List<Integer> rightSideView(TreeNode root) {
            if(root==null)
            return new ArrayList<Integer>();
    			Queue<TreeNode> q=new LinkedList<TreeNode>();
    			Queue<Integer> q2=new LinkedList<Integer>();
    			List<Integer> list=new ArrayList<Integer>();
    			int last=1;
    			TreeNode lastT=root;
    			q.add(root);
    			q2.add(1);
    			while(q.size()>0) {
    				TreeNode p=q.poll();
    				int temp=q2.poll();
    				if(temp!=last) {
    					list.add(lastT.val);
    					last=temp;
    				}
    				lastT=p;
    				if(q.size()==0&&p.left==null&&p.right==null)
    				{
    					list.add(lastT.val);
    					return list;
    				}
    				if(p.left!=null)
    				{
    					q.add(p.left);
    					q2.add(temp+1);
    				}
    				if(p.right!=null)
    				{
    					q.add(p.right);
    					q2.add(temp+1);
    				}
    				
    			}
    			return list;
        }
    }
    

  • 相关阅读:
    几种排序算法比较
    VB 增强的部件与引用
    EXCEL表格常用函数使用的难点
    VBA取得EXCEL表格中的行数和列数
    VB指针 与CopyMemory
    【VB】StrConv函数 vbUnicode用法
    TCP/IP笔记(七)TCP详解
    TCP/IP笔记(六)TCP与UDP
    TCP/IP笔记(四)IP协议
    TCP/IP笔记(三)数据链路层
  • 原文地址:https://www.cnblogs.com/code-fun/p/14305733.html
Copyright © 2011-2022 走看看