【数据结构】:二叉树的建立,如何求叶子结点的个数

二叉树基本概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点+左子树的二叉树+右子树的二叉树组成。

二叉树的特点:

1、每个节点最多有两棵子树,即二叉树的结点的度不大于2。

2、二叉树的子树有左右之分,其子树的次序不能颠倒,因此二叉树是有序树

树的度:一棵树中,最大的节点的度称为树的度

叶子结点:度为0的结点称为叶节点,如上图的:1、3 、 5 为叶节点

双亲节点或父节点:若一个结点含有子节点,则这个结点称为其子节点的父节点,如上图的:4是2和6的父节点

孩子结点或子节点:一个节点含有子树的根节点称为该节点的子节点,如上图的:2,6是4的子节点

根节点:一棵树中,没有双亲节点的结点,如上图的:4

结点的层次:从根开始定义起,根节点为第一层,根的子节点为第2层,以此类推,如上图的:4在第一层,1在第三层

树的高度或深度:树中节点的最大层数

兄弟结点:具有相同的父节点的结点互称为兄弟结点,如2和6为兄弟结点,1和3为为兄弟结点

树的结点采用孩子兄弟表示法

class TreeNode {
    int  val;
    TreeNode leftChild;
    TreeNode rightChild;

    public TreeNode(int val) {
        this.val=val;
    }
}
public class BuildTree {
    public static TreeNode buildTree() {
        //构建二叉树,返回根节点的引用
        // 先构造结点,
        TreeNode a = new TreeNode('4');
        TreeNode b = new TreeNode('2');
        TreeNode c = new TreeNode('6');
        TreeNode d = new TreeNode('1');
        TreeNode e = new TreeNode('3');
        TreeNode f = new TreeNode('5');

        a.leftChild = b;
        a.rightChild = c;

        b.leftChild = d;
        b.rightChild = e;

        c.leftChild = f;
        c.rightChild = null;

        d.leftChild = null;
        d.rightChild = null;

        e.leftChild = null;
        e.rightChild = null;

        f.leftChild = null;
        f.rightChild = null;

        return a;
    }


    private static int leaftn;//记录叶子结点个数
    private static int leaftNodeSize(TreeNode root){
        //求叶子节点个数
        leaftn=0;
        preOder(root);//从根结点出发,开始寻找叶子结点
        return leaftn;
    }

    private static void preOder(TreeNode root) {
        if(root!=null){
            if(root.leftChild==null&&root.rightChild==null) {
                //当一个节点的左右孩子均为null,则说明他是叶子结点

                leaftn++;

            }
            //递归调用,遍历结点的左右子树部分,寻找叶子结点
            preOder(root.leftChild);
            preOder(root.rightChild);
        }
    }

    public static void main(String[] args) {
        TreeNode root=buildTree();
        System.out.println("此二叉树的叶子结点共有"+leaftNodeSize(root)+"个。");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44292334/article/details/115145148