zoukankan      html  css  js  c++  java
  • [GeeksForGeeks] Print leftmost and rightmost nodes at each level of a binary tree.

    Given a Binary Tree, Print the corner nodes at each level. The node at the leftmost and the node at the rightmost.

    For example, output for following is 15, 10, 20, 8, 25.

    Solution. Level Order Traversal using queue.

    Core idea:  Level order traversal always visit nodes of one level from left to right. 

    And we know the number of nodes at each level by pre-reading the size of the queue. 

     1 import java.util.ArrayList;
     2 import java.util.LinkedList;
     3 import java.util.Queue;
     4 
     5 class TreeNode {
     6     TreeNode left;
     7     TreeNode right;
     8     int val;
     9     TreeNode(int val){
    10         this.left = null;
    11         this.right = null;
    12         this.val = val;
    13     }
    14 }
    15 public class Solution {
    16     public ArrayList<TreeNode> getLeftRightMostAtEachLevel(TreeNode root) {
    17         ArrayList<TreeNode> result = new ArrayList<TreeNode>();
    18         if(root == null){
    19             return result;
    20         }
    21         Queue<TreeNode> queue = new LinkedList<TreeNode>();
    22         queue.offer(root);        
    23         while(!queue.isEmpty()){
    24             int size = queue.size();
    25             for(int i = 0; i < size; i++){
    26                 TreeNode curr = queue.poll();
    27                 if(i == 0){
    28                     result.add(curr);
    29                 }
    30                 if(i > 0 && i == size - 1){
    31                     result.add(curr);
    32                 }
    33                 if(curr.left != null){
    34                     queue.offer(curr.left);
    35                 }
    36                 if(curr.right != null){
    37                     queue.offer(curr.right);
    38                 }
    39             }
    40         }
    41         return result;
    42     }
    43 }
  • 相关阅读:
    SPF(poj 1523) 割点入门
    从一个例子讲解拷贝构造函数与return
    还是引用
    引用的实质
    const
    三目运算符
    关于C语言链表的学习
    CS2013调试DLL
    fread与fwrite的自我理解
    可见字符与不可见字符
  • 原文地址:https://www.cnblogs.com/lz87/p/7277712.html
Copyright © 2011-2022 走看看