Set left node count
Given a binary tree, count the number of nodes in each node’s left subtree, and store it in the numNodesLeft field.
Examples
1(6)
/ \
2(3) 3(0)
/ \
4(1) 5(0)
/ \ \
6(0) 7(0) 8(0)
The numNodesLeft is shown in parentheses.
Solution: sinking check, backtracking
Base Case: if root is null, return 0;
Recursive call:
From children: get left and right count
For self: pass up left + right count + 1
/**
* public class TreeNodeLeft {
* public int key;
* public TreeNodeLeft left;
* public TreeNodeLeft right;
* public int numNodesLeft;
* public TreeNodeLeft(int key) {
* this.key = key;
* }
* }
*/
public class Solution {
public void numNodesLeft(TreeNodeLeft root) {
numLeft(root);
}
public int numLeft(TreeNodeLeft root){
if (root == null) return 0;
int leftCount = numLeft(root.left);
int rightCount = numLeft(root.right);
root.numNodesLeft = leftCount;
return leftCount + rightCount + 1;
}
}
Time Complexity: O(2^N) two recursive calls per node
Space Complexity: O(Height) recursive call stack
Last updated
Was this helpful?