首页 > 编程语言 >二叉树相关的三个常见算法题

二叉树相关的三个常见算法题

时间:2024-05-04 23:55:49浏览次数:23  
标签:return int 常见 算法 二叉树 n1 n2 root

算法题一

image

// 计算一颗二叉树的所有节点的数量
int BinaryTree_CountNode(Tnode_t *root)
{
    int n1, n2;
    if (NULL == root)
    {
        return 0;
    }
    n1 = BinaryTree_CountNode(root->lchild);
    n2 = BinaryTree_CountNode(root->rchild);
    return n1 + n2 + 1;
}


算法题二

image

// 计算一颗二叉树的所有叶子节点的数量,采用递归的方式实现
int BaniryTree_CountLeafNode(Tnode_t *root)
{
    int n1, n2;
    if (NULL == root)
    {
        return 0;
    }
    else if (root->lchild == NULL && root->rchild == NULL)
    {
        return 1;
    }
    else
    {
        n1 = BaniryTree_CountLeafNode(root->lchild);
        n2 = BaniryTree_CountLeafNode(root->rchild);
    }
    return n1 + n2;
}

算法题三

image

// 计算一颗二叉树的深度,采用递归实现
int BinaryTree_GetDepth(Tnode_t *root)
{
    int n1, n2;
    if (NULL == root)
    {
        return 0;
    }
    else
    {
        n1 = BaniryTree_GetDepth(root->lchild);
        n2 = BaniryTree_GetDepth(root->rchild);
    }

    return (n1 > n2 ? n1 : n2) + 1;
}

标签:return,int,常见,算法,二叉树,n1,n2,root
From: https://www.cnblogs.com/bell-c/p/18172977

相关文章

  • Diff算法
    概论:什么是Diff算法?为什么要使用diff算法?手写Vue的diff算法手写React的diff算法diff去比较虚拟DOM=》找出差异点(需要更新一个虚拟DOM)=》真实DOM=》renderVue中diff算法实现:https://blog.csdn.net/weixin_69422396/article/details/135475844React中diff算......
  • 游戏排名算法:Elo、Glicko、TrueSkill
    EloratingsystemElo等级分制度(英语:Eloratingsystem)是指由匈牙利裔美国物理学家ArpadElo创建的一个衡量各类对弈活动水平的评价方法,是当今对弈水平评估公认的权威标准。两个选手(player)在排名系统的不同,可以用来预测比赛结果。两个具有相同排名(rating)的选手相互竞争时,不管哪......
  • 代码随想录算法训练营第11天 | 栈与队列 20.有效的括号 1047.删除字符串中的所有相邻
    leetcode20.有效的括号题目20.有效的括号给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。解题思路实现代码leetcod......
  • 寻根KMP算法
    本人被\(KMP\)已经折磨许久。五战KMP。方知之前理解确实浅。故写此篇。这是之前那篇,实在是太浅,不过对代码做了注释。https://www.acwing.com/solution/content/131255/本篇重点说明\(KMP\)的原理,而非过程。过程相信其他博客已经写的十分完善了。\(KMP\)算法(\(Knuth-Morris-......
  • 常见的排序算法
    常见的排序算法目录一、冒泡排序(BubbleSort)二、插入排序(InsertSort)三、选择排序(SelectionSort)四、希尔排序(ShellSort)五、快速排序(QuickSort)六、堆排序(HeapSort)七、归并排序(MergeSort)八、计数排序(CountSort()九、桶排序(BucketSort)十、基数排序(RadixSor......
  • 常见CDN绕过姿势
    CDN绕过:1、子域名子域名查询:在一些网站中有可能只加速了主站,而一些其它子域名和主站在同一个C段或者同服务器利用子域名查询工具:http://tool.chinaz.com/subdomain/http://i.links.cn/subdomain/http://subdomain.chaxun.la/http://searchdns.netcraft.com/https://w......
  • 算法随笔——主席树(可持久化线段树)
    介绍主席树即可持久化线段树,由hjt大佬发明。好像又称函数式线段树。可以查询序列在任意时间的历史状态。学习链接学习链接主要思路维护历史状态,若采用直接拷贝整棵树的方式,空间爆炸。可以发现每次修改只有部分节点发生了改变(其实就是到树根那条链会改变),因此每次只需要记......
  • leetcod算法热题--移动零
    题目给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0]提示:1<=nums.length<=......
  • leetcode算法热题--最长连续序列
    题目给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。它的长度为4。示例2:输入:nums=......
  • 个人算法竞赛模板(2024.5.4)
    精简版:#include<algorithm>#include<cmath>#include<cstring>#include<iostream>#include<map>#include<queue>#include<set>#include<stack>#include<string>#include<vector>#include<......