问题描述:
给出一个完全二叉树,求出该树的节点个数。
说明:
完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
示例:
输入:
1
/ \
2 3
/ \ /
4 5 6
输出: 6
思路:
求完全二叉树的结点个数
上代码,拿去即可运行:
package com.onlyqi.test03.erfen;
/**
* @author onlyqi
* @date 2022/7/12 14:44
* @description
*/
public class Test6 {
public static Integer num =0;
public static void main(String[] args) {
TreeNode treeNode1 = new TreeNode(1);
TreeNode treeNode2 = new TreeNode(2);
TreeNode treeNode3 = new TreeNode(3);
TreeNode treeNode4 = new TreeNode(4);
TreeNode treeNode5 = new TreeNode(5);
TreeNode treeNode6 = new TreeNode(6);
treeNode2.setLeft(treeNode6);
treeNode3.setLeft(treeNode4);
treeNode3.setRight(treeNode5);
treeNode1.setLeft(treeNode3);
treeNode1.setRight(treeNode2);
System.out.println("========================"+count(treeNode1));
}
public static Integer count(TreeNode treeNode) {
if (treeNode != null) {
//访问根节点
num=num+1;
//访问左节点
count(treeNode.getLeft());
//访问右节点
count(treeNode.getRight());
}
return num;
}
}
class TreeNode {
private Integer value;
private TreeNode left;
private TreeNode right;
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
public TreeNode(Integer value) {
this.value = value;
}
}
运行结果:
我要刷300道算法题,第106道