输出二叉树的右视图

日常看不懂系列

  public TreeNode buildTree(int[] xianxu,int l1,int r1,int[] zhongxu,int l2,int r2){
       if(l1>r1||l2>r2){
           return null;
       }

       TreeNode root=new TreeNode(xianxu[l1]);

       int rootIndex=0;

       for (int i=l2;i<=r2;i++){
           if(zhongxu[i]==xianxu[l1]){
               rootIndex=i;
               break;
           }
       }

       int leftsize=rootIndex-l2;
       int rightsize=r2-rootIndex;
       root.left=buildTree(xianxu,l1+1,l1+leftsize,zhongxu,l2,l2+leftsize-1);
       root.right=buildTree(xianxu,r1-rightsize+1,r1,zhongxu,rootIndex+1,r2);
       return root;
   }

   public ArrayList<Integer> rightSideView(TreeNode root){
       Map<Integer,Integer> mp=new HashMap<Integer,Integer>();
       int max_depth=-1;
       Stack<TreeNode> nodes=new Stack<TreeNode>();
       Stack<Integer> depths=new Stack<Integer>();
       nodes.push(root);
       depths.push(0);
       while (!nodes.isEmpty()){
           TreeNode node=nodes.pop();
           int depth=depths.pop();
           if(node!=null){
               max_depth=Math.max(max_depth,depth);
               if(mp.get(depth)==null) mp.put(depth,node.val);
               nodes.push(node.left);
               nodes.push(node.right);
               depths.push(depth+1);
               depths.push(depth+1);
           }
       }
       ArrayList<Integer> res=new ArrayList<Integer>();

       for (int i=0;i<=max_depth;i++){
           res.add(mp.get(i));
       }

       return res;
   }
   public int[] solve(int[] xianxu,int[] zhongxu){
       if(xianxu.length==0) return new int[0];

       TreeNode root=buildTree(xianxu,0,xianxu.length-1,zhongxu,0,zhongxu.length-1);
       ArrayList<Integer> temp=rightSideView(root);
       int[] res=new int[temp.size()];
       for (int i=0;i< temp.size();i++){
           res[i]=temp.get(i);
       }
       return res;

   }


全部评论

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结:&nbsp;27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
字节7000实习来了,你...
点赞 评论 收藏
分享
钱嘛数字而已:拖拉机被发明出来之后,就不需要农民了吗?农民还是需要的,但不需要这么多了,另外对农民的要求也变高了,需要会开拖拉机。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务