【leetcode】222(Medium)Count Complete Tree Nodes
解题思路
可以用morris遍历,或者递归
提交代码:morris
class Solution {
public int countNodes(TreeNode root) {
int res=0;
TreeNode p1=root,p2=root;
while(p1!=null) {
if(p1.left!=null) {
p2=p1.left;
while(p2.right!=null&&p2.right!=p1)
p2=p2.right;
if(p2.right==null) {
p2.right=p1;
p1=p1.left;
}
else {
res++;
p2.right=null;
p1=p1.right;
}
}else {
res++;
p1=p1.right;
}
}
return res;
}
}
运行结果
提交代码:递归
class Solution {
public int countNodes(TreeNode root) {
if(root==null) return 0;
return countNodes(root.left)+countNodes(root.right)+1;
}
}