解题思路
可以用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;
}
}
运行结果

博客介绍了二叉树遍历的解题思路,可采用morris遍历或递归方法,并分别给出了morris和递归的提交代码及运行结果,聚焦于信息技术领域的算法解题。

被折叠的 条评论
为什么被折叠?



