Write a method named removeLeaves
that removes the leaves from a tree.
A leaf is a node that has empty (null) left and right subtrees.
Your method accepts as its parameter a TreeNode
representing the root of the tree and returns the tree's new root.
For example, suppose a variable tree
refers to the root of the first tree below:
__7__
/ \
3 9
/ \ / \
1 4 6 8
\
0
The call of removeLeaves(tree)
should remove the four leaves from the tree (the nodes with data values 1
, 4
, 6
, and 0
) returning the tree shown below.
7
/ \
3 9
\
8
If your method is called on an empty tree, you should return null
.
Assume that you are interacting with TreeNode
s as defined below:
public class TreeNode {
public int data;
public TreeNode left;
public TreeNode right;
public TreeNode() { ... }
public TreeNode(int data) { ... }
public TreeNode(int data, TreeNode left, TreeNode right) { ... }
}