完全二叉树结点数
给定一棵完全二叉树的头节点head,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}*/
public
class
Solution {
public
int
nodeNum(TreeNode head) {
if
(head==
null
)
return
0
;
TreeNode tempLeft=head.left,tempRight=head.right;
if
(tempLeft==
null
)
return
1
;
if
(tempRight==
null
)
return
2
;
int
leftHigt=
1
,rightHigh=
1
;
while
(tempLeft.left!=
null
) {
tempLeft=tempLeft.left;
leftHigt++;
}
while
(tempRight.left!=
null
) {
tempRight=tempRight.left;
rightHigh++;
}
if
(rightHigh==leftHigt)
return
(
1
<<leftHigt)+nodeNum(head.right);
else
return
(
1
<<rightHigh)+nodeNum(head.left);
}
}