Remove nodes on root to leaf paths of length < K

 public static int labelNodes(Node root, int level){
            if(root.left == null && root.right == null){
            	root.level = level;
            	return level;
            }
            
            int leftLabel = -1;
            if(root.left != null){
            	leftLabel = labelNodes(root.left, level+1);
            }
            int rightLabel =-1;
            if(root.right!=null){
                 rightLabel = labelNodes(root.right, level+1);
            }
            root.level = Math.max(leftLabel, rightLabel);
            return root.level;
    }
    
    public static void remNodes(Node c, Node p, int k){
    	if(c == null) return;
    	Node parent = p;
    	Node cur = c;
    	if(cur.level < k){
    		if(parent!=null){
    			if(parent.left == cur) parent.left = null;
    			else{
    				parent.right = null;
    			}
    		}else{
    			cur = null;
    		}
    	}else{
    		remNodes(cur.left, cur, k);
    		remNodes(cur.right, cur, k);
    	}
    }
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a comment