java怎么求二叉树的叶子节点?java二叉树高度怎么求?

二叉树是有限个节点的集合,这个集合可以是空集,也可以是一个根节点和两颗不相交的子二叉树组成的集合,那java怎么求二叉树的叶子节点?下面来我们就来给大家讲解一下。

有两种方法都是递归实现:

方法一、web

将先序遍历打印节点改成:先判断是不是叶子节点(左右子树为空)

若是是计数器+1,若是不是则不作处理

遍历到一个非空节点时判断一次

1.先判断根节点

2.在递归遍历左子树

3.在递归遍历右子树

4.子树的遍历过程遵循1~3

5.当为空树时即到达递归的出口

void _Treeleaf(TreeNode * root, size_t * size)
    {
        if (root == NULL)
        { //空树 return ; } if(size==NULL) { //非法输入 return ; } //左右子书为空,即为叶子节点 if(root->lchild==NULL&&root->rchild==NULL) { (*count)++; } //递归遍历左右子树并计数 _Treeleaf1(root->lchild,count); _Treeleaf1(root->rchild,count); return ; } size_t Treeleaf1(TreeNode* root) { if(root==NULL) { return 0; } size_t count=0; _Treeleaf1(&root,&count); return count; }

方法二、svg

左子树的叶子节点+右子树的叶子节点

size_t Treeleaf(TreeNode* root) { if(root==NULL) { //空树 return 0; } size_t count=0; if(root->lchild==NULL&&root->rchild==NULL) { //只有根节点 return 1; } //统计左子树 size_t lsize=Treeleaf(root->lchild); //统计右子树 size_t rsize=Treeleaf(root->rchild); return lsize+rsize; }

java二叉树高度怎么求?

思路:首先需要一种获取以某个节点为子树的高度方法,使用递归实现。如果一个节点为空,那么这个节点肯定是一颗空树,高度为0;如果不为空,则遍历地比较它的左右子树高度,高的一个为这颗子树的最大高度,然后加上自身的高度即可

/**
* 求二叉树的高度:
* 首先要一种获取以某个节点为子树的高度的方法,使用递归调用。
* 如果一个节点为空,那么这个节点肯定是一颗空树,高度为0;
* 如果不为空,那么我们要遍历地比较它的左子树高度和右子树高度,
* 高的一个为这个子树的最大高度,然后加上自己本身的高度就是了
* 获取二叉树的高度,只需要调用第一种方法,即传入根节点
*/
//获取二叉树的高度
public int heigh()
{
    return heigh(root);
}
//获取以某节点为子树的高度
public int heigh(BinaryTreeNode node)
{
    if (node == null)
    {
        return 0; //递归结束,空子树高度为0
    }
    else
    {
        //递归获取左子树高度
        int l = heigh(node.getLeftChirld());
        //递归获取右子树高度
        int r = heigh(node.getRightChirld());
        //高度应该算更高的一边,(+1是因为要算上自身这一层)
        return l > r ? (l + 1) : (r + 1);
    }
}

二叉树是一个递归地概念,在java中是一个重要的知识点,因此对于求二叉树的高度以及节点数我们都需要掌握哦!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。

推荐阅读:

java系统使用在哪些领域?java系统使用领域介绍

java应用程序的入口是什么?java应用程序怎么理解?

java面试小公司一般多久通知?Java有哪些面试技巧?