美文网首页
二叉树的创建以及遍历,统计二叉树的叶子节点,全部节点

二叉树的创建以及遍历,统计二叉树的叶子节点,全部节点

作者: 历十九喵喵喵 | 来源:发表于2021-01-08 23:33 被阅读0次

二叉树的创建以及遍历,统计二叉树的叶子节点,全部节点,代码完整实现以及注释

/**
 * 二叉树的创建以及遍历,统计二叉树的叶子节点
 */

//定义二叉树,构建节点,初始化节点
class TreeNode{
    int val;
    TreeNode left,right;

    public TreeNode(int item){
        val=item;
        left=right = null;
    }

}

//创建二叉树并初始化二叉树
class BinaryTree{
    //tree of root
    TreeNode root;

    BinaryTree(){
        root =null;
    }
}

public class Main {
    public static void main(String[] args) {
        //create an object of tree
        BinaryTree tree = new BinaryTree();
        //create nodes of tree
        tree.root = new TreeNode(1);
        tree.root.left = new TreeNode(2);
        tree.root.right = new TreeNode(3);

        //create nodes of tree.right
        tree.root.left.left = new TreeNode(4);
        //create nodes of tree.left
        tree.root.right.right = new TreeNode(5);

        //创建类对象
        Main mytree=new Main();
        //调用方法
        int totalleaf = mytree.countTotalLeafNodeNum(tree.root);
        System.out.println("total leaf nodes:" + totalleaf);

        System.out.println("total nodes: "+ mytree.countTotalNodeNum(tree.root));

        //遍历二叉树
        System.out.println("前序遍历:"); //12435
        mytree.preOrder(tree.root);
        System.out.println("中序遍历:");//42135
        mytree.inOrder(tree.root);
        System.out.println("后序遍历:");//42531
        mytree.lastOrder(tree.root);

    }

    /**
     * count leaf nodes
     * @param root
     * @return
     */
    public int countTotalLeafNodeNum(TreeNode root){
        //空树
        if(root == null){
            return 0;
        }

        //只有根节点
        if(root.left == null || root.right ==null){
            return 1;
        }else{
            return countTotalLeafNodeNum(root.left) + countTotalLeafNodeNum(root.right);
        }
    }

    /**
     *  count total nodes
     * @param root
     * @return
     */
    public int countTotalNodeNum(TreeNode root){
        //空树
        if(root == null){
            return 0;
        }

        return 1 + countTotalNodeNum(root.left) + countTotalNodeNum(root.right);
    }


    /**
     * 二叉树的遍历
     */
    //前序遍历
    public void preOrder(TreeNode root){
        if(root == null) return;

        System.out.println(root.val);
        preOrder(root.left);
        preOrder(root.right);
    }

    //中序遍历
    public void inOrder(TreeNode root){
        if(root == null) return;

        inOrder(root.left);
        System.out.println(root.val);
        inOrder(root.right);
    }

    //后序遍历
    public void lastOrder(TreeNode root){
        if(root == null) return;

        lastOrder(root.left);
        lastOrder(root.right);
        System.out.println(root.val);
    }
}

相关文章

  • 二叉树的创建以及遍历,统计二叉树的叶子节点,全部节点

    二叉树的创建以及遍历,统计二叉树的叶子节点,全部节点,代码完整实现以及注释

  • 二叉树

    二叉树实现 本程序实现二叉树的构造以及三种遍历的递归与非递归算法、求叶子数和节点数,以及判断一个节点是否是叶子等操...

  • LeetCode 107. 二叉树的层次遍历 II

    107. 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点...

  • 107. 二叉树的层次遍历 II

    107. 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点...

  • 107. 二叉树的层次遍历 II

    107. 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点...

  • LeetCode-107-二叉树的层序遍历 II

    二叉树的层序遍历 II 题目描述:给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点...

  • 创建二叉树并遍历

    一、创建节点类 节点类中存储着要保存的数据,以及他的左子树和右子树 二、创建二叉树 三、测试 先序遍历 后序遍历 ...

  • golang 的二叉搜索树

    Golang版的二叉树。 节点声明,以及树的创建。 树的插入节点 树的中序遍历(实现排序) 找到树节点中的最小的(...

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

  • 二叉树

    二叉树的创建和遍历都可以通过递归实现 三种遍历方式的记忆:前序遍历 根节点==》左节点==》右节点中序遍历 ...

网友评论

      本文标题:二叉树的创建以及遍历,统计二叉树的叶子节点,全部节点

      本文链接:https://www.haomeiwen.com/subject/empqaktx.html