zoukankan      html  css  js  c++  java
  • [GeeksForGeeks] Print all nodes that don't have sibling in a binary tree.

    Given a binary tree,  get all nodes that don't have sibling node, excluding the root node. 

    Level order and pre order solutions.

     1 import java.util.ArrayList;
     2 import java.util.LinkedList;
     3 import java.util.Queue;
     4 
     5 public class NodeWithoutSibling {
     6     public ArrayList<Integer> getNodesWithoutSiblingLevelOrder (TreeNode root){
     7         if(root == null) {
     8             return null;
     9         }
    10         ArrayList<Integer> list = new ArrayList<Integer>();
    11         Queue<TreeNode> queue = new LinkedList<TreeNode>();
    12         queue.add(root);
    13         while(!queue.isEmpty()) {
    14             TreeNode curr = queue.poll();
    15             if(curr.left != null) {
    16                 queue.add(curr.left);
    17             }
    18             if(curr.right != null) {
    19                 queue.add(curr.right);
    20             }
    21             if(curr.left != null && curr.right == null) {
    22                 list.add(curr.left.val);
    23             }
    24             if(curr.left == null && curr.right != null) {
    25                 list.add(curr.right.val);
    26             }
    27         }
    28         return list;
    29     }
    30     
    31     public ArrayList<Integer> getNodesWithoutSiblingPreOrder1 (TreeNode root){
    32         ArrayList<Integer> list = new ArrayList<Integer>();        
    33         preOrderHelper1(root, list);
    34         return list;
    35     }
    36     private void preOrderHelper1(TreeNode node, ArrayList<Integer> list) {
    37         if(node == null) {
    38             return;
    39         }
    40         if(node.left != null && node.right == null) {
    41             list.add(node.left.val);
    42         }
    43         if(node.left == null && node.right != null) {
    44             list.add(node.right.val);
    45         }        
    46         preOrderHelper1(node.left, list);
    47         preOrderHelper1(node.right, list);
    48     }
    49     
    50     public ArrayList<Integer> getNodesWithoutSiblingPreOrder2 (TreeNode root) {
    51         ArrayList<Integer> list = new ArrayList<Integer>();        
    52         preOrderHelper2(root, list);
    53         return list;        
    54     }
    55     private void preOrderHelper2(TreeNode node, ArrayList<Integer> list) {
    56         if(node == null) {
    57             return;
    58         }
    59         if(node.left != null && node.right != null) {
    60             preOrderHelper2(node.left, list);
    61             preOrderHelper2(node.right, list);            
    62         }
    63         else if(node.left != null) {
    64             list.add(node.left.val);
    65             preOrderHelper2(node.left, list);            
    66         }
    67         else if(node.right != null) {
    68             list.add(node.right.val);
    69             preOrderHelper2(node.right, list);                
    70         }
    71     }
    72     
    73     public static void main(String[] args) {
    74         TreeNode n1 = new TreeNode(1);
    75         TreeNode n2 = new TreeNode(2);
    76         TreeNode n3 = new TreeNode(3);
    77         TreeNode n4 = new TreeNode(4);
    78         TreeNode n5 = new TreeNode(5);
    79         TreeNode n6 = new TreeNode(6);
    80         n1.left = n2; n1.right = n3;
    81         n2.right = n4; n3.left = n5; n5.left = n6;
    82         NodeWithoutSibling test = new NodeWithoutSibling();
    83         ArrayList<Integer> list = test.getNodesWithoutSiblingPreOrder2(n1);
    84         for(int i = 0; i < list.size(); i++) {
    85             System.out.println(list.get(i));
    86         }
    87     }
    88 }
  • 相关阅读:
    MS SQL发生死锁以及tempdb的优化资源总结
    MS SQL SERVER 簡易取得資料表實體檔案大小
    jquery选择器(转载)
    [資源]RAID是什么意思?RAID的应用
    WIN2003下安裝PHP+MYSQL資源
    MS SQL 錯誤: 15457,重要性: 0,狀態: 1
    [轉]如何修改bootini文件的/pae/awe/3gb参数
    [資源]PHP防止SQL注入
    [收藏]CSS,JS控制Table的行顏色,以及邊框
    檢查php文件中是否含有bom的php文件
  • 原文地址:https://www.cnblogs.com/lz87/p/7414820.html
Copyright © 2011-2022 走看看