• [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 }
  • 相关阅读:
    172. Factorial Trailing Zeroes
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
    91. Decode Ways
    LeetCode 328 奇偶链表
    LeetCode 72 编辑距离
    LeetCode 226 翻转二叉树
    LeetCode 79单词搜索
    LeetCode 198 打家劫舍
    LeetCode 504 七进制数
  • 原文地址:https://www.cnblogs.com/lz87/p/7414820.html
Copyright © 2020-2023  润新知