关于树的常见编程题

[编程题] 将满二叉树转换为求和树 给满出二叉树,编写算法将其转化为求和树 什么是求和树:二叉树的求和树, 是一颗同样结构的二叉树,其树中的每个节点将包含原始树中的左子树和右子树的和。 二叉树: 10 / \ -2 6 / \ / \ 8 -4 ... 阅读详情
  1. 获取二叉树中和最大的路径【leetcode124】
    二叉树每一个节点都有一个数,求和最大的路径。
    注意:这是所有路径,包括一个叶子节点到另一个叶子节点的路径。
def recursion(root, m):
    if root is None:
        return 0
    left = recursion(root.left, m)
    right = recursion(root.right, m)
    ret = max(left, right, 0) + root.val
    m[0] = max(m[0], ret, left+right+root.val)
    return ret

def maxPathSum(root):
    if root is None:
        return 0
    m = [root.val]
    recursion(root, m)
    return m[0]
  1. 二叉树的最小深度与最大深度【leetcode111、104】
# 以下是二叉树的最小深度的求解
def minDepth(root):
    if root is None:
        return 0
    if root.left is not None:
        if root.right is not None:
            return min(minDepth(root.left), minDepth(root.right)) + 1
        else:
            return minDepth(root.left) + 1
    elif root.right is not None:
        return minDepth(root.right) + 1
    else:
        return 1

#以下是二叉树最大深度的求解
def maxDepth(root):
    return 0 if root is None else max(maxDepth(root.left), maxDepth(root.right))+1
  1. 判断二叉树是否平衡【leetcode110】
    每个节点的左子树与右子树的高度之差至多为1则是平衡二叉树。
def recursion(root, h):
    if root is None:
        h[0] = 0
        return True
    lh, rh = [0], [0]
    if not recursion(root.left, lh):
        return False
    if not recursion(root.right, rh):
        return False
    h[0] = max(lh[0], rh[0]) + 1
    return abs(lh[0] - rh[0]) <= 1

def isBalanced(root):
    return recursion(root, [0])
  1. 判断两个二叉树是否相同【leetcode100】
def isSame(root1, root2):
    if root1 is None:
        return root2 is None
    else:
        if root2 is None:
            return False
        else:
            return root1.val == root2.val and isSame(root1.left, root2.left) and isSame(root1.right, root2.right)
  1. 判断二叉树是否对称【leetcode101】
def recursion(root1, root2):
    if root1 is None:
        return root2 is None
    else:
        if root2 is None:
            return False
        else:
            return root1.val == root2.val and recursion(root1.left, root2.right) and recursion(root2.left, root1.right)

def isSymmetrical(root):
    if root is None:
        return True
    return recursion(root.left, root.right)
  1. 判断二叉树是否为二叉搜索树【leetcode98、173】
    对于任意一个节点,其左子树比它小,其右子树比它大
# 该方法采用中序遍历保存所有值,可优化为只保存一个值,每次去比较即可
def inorderTraversal(root, arr):
    if root is not None:
        inorderTraversal(root.left, arr)
        arr.append(root.val)
        inorderTraversal(root.right, arr)
        
def isSearchTree(root):
    arr = []
    inorderTraversal(root, arr)
    i = 1
    while i < len(arr):
        if arr[i-1] >= arr[i]:
            return False
        i += 1
    return True
直击高频编程考点:树相关知识及经典算法题总结 树相关知识及编程练习总结:背景知识+树的应用举例(Spring中的应用举例+其他框架中的应用举例+实际开发中的应用举例)+相关编程练习(二叉树遍历:包括前序遍历、中序遍历、后序遍历、层序遍历等+二叉树的最大深度+二叉树的最小深度+对称二叉树+二叉树的最近公共祖先+二叉树的直径+二叉树的路径和+二叉搜索树中的插入操作+二叉搜索树中的删除操作+二叉搜索树中的搜索操作+二叉树的层平均值+二叉树的镜像+二叉树的序列化与反序列化+二叉树的右视图+二叉树的最大宽度+前序遍历和中序遍历构造二叉树+平衡二叉树) 阅读详情

相关推荐

【数据结构】-408真题-编程题总结

单链表 【2009】 【2012】 【2015】 【2019】 数组 【2010】https://blog.youkuaiyun.com/qq_39328436/article/details/108555686 考点:循环左移数组 方法:1.全部翻转 2.前面翻转 3.后面翻转 【2011】https://blog.youkuaiyun.com/qq_39328436/article/details/106673506 考点:找两个数组的中位数 方法:归并比较 【2013】https://blog

vector的博客 6471

【王道数据结构】树的编程题(一)

1、编写后序遍历二叉树的非递归算法。 算法思想: void PostOrder(BiTree T) { InitStack(S); p = T; r = NULL; while (p || !IsEmoty(S)) { if (p) { push(S, p); p = p->lchild; } else { GetTop(S, p); if (p->rchild && p->rchild != r) p =

荒唐的博客 1858

数据结构编程题汇总

考研数据结构编程题汇总,计算机专业课数据结构考研编程题汇总

树编程题_剑指offer07_重建二叉树

剑指offer07_重建二叉树 java官解注释

xklx_z的博客 159

第一篇:常见CAN错误帧及其排查方向

在本文中主要阐述各类错误帧的形成原因以及在使用同星硬件设备出现错误帧时,应当 如何进行排查并消除错误帧。在 CAN 总线通信中,通常遇见的错误帧主要为以下五种,其 分别是:bit error、ACK error、stuff error、CRC error 以及 form error。

u013089100的博客 1742

UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。

MarcoPro的博客 1633

数据结构代码题------树相关day01 序幕

数据结构代码题----树 题目01 已知一颗二叉树,按照顺序存储结构进行存储,设计一个算法,求编号分别i和j的两个节点的最近的公共祖先结点的值。 算法分析 1、首先是对二叉树的顺序结构进行介绍 结合以上的图片描述,对于二叉树中,顺序存储的设计性质如下: 祖先结点的下标为i/2或者j/2 已知一个祖先结点,其儿子结点的下标为i*2 2、寻找最近公共祖先结点 思路: 想象下,现在二叉树的深度非常的大,若i和j分别在不同的子树系统中,若要找到最近的公共祖先结点,要怎么做呢??? 答案 答案每次进行i

brotherand的博客 5083

CAPL编程入门:从零开始掌握汽车通信脚本语言

本文详细介绍了CAPL编程的基础知识,从开发环境搭建到核心语法精要,再到总线通信实战和高级调试技巧。CAPL作为汽车通信脚本语言,专为CAN、LIN等网络协议设计,帮助工程师高效完成车载网络测试。通过实战案例和性能优化建议,读者可以快速掌握CAPL编程技能。

s1t2u3的博客 978

c++数据结构-树(详细总结附代码,一看就懂)

一棵树是由n(n>0)个元素组成的有限集合,其中:(1)每个元素称为结点(node)(2)有一个特定的结点,称为根结点或树根(root)(3)除根节点外,其余节点能分成m(m>=0)个互不相交的有限集合 T(0)-T(m-1)。其中的每一个子集都是一个树,这些集合被称为这棵树的子树。

我的博客 8947

MT6816磁编码器在无人机电调中的实战应用:从选型到调试全记录

本文详细介绍了MT6816磁编码器在无人机电调系统中的实战应用,涵盖选型、硬件集成、软件配置到飞行测试的全流程。通过对比霍尔传感器和光电编码器,突出MT6816在角度分辨率、安装公差和抗振动能力等方面的优势,为无人机动力系统提供高精度控制解决方案。

pandas7gardener的博客 234

Qt中常见的面试题总结

基于Qt开发的一些常用面试题

一名热爱编程的程序员 8492

7.力扣2018年常见编程题总结(树)

1.给定一个二叉搜索树,编写一个函数kthSmallest来查找其中第k个最小的元素。 解:要求找第k个最小的元素,即需要对树进行遍历排序,中序遍历元素得到的结果即为二叉搜索树的排序好的结果,因此采用中序遍历,每遍历一次都保存下父结点并且遍历k次。 代码: #include <iostream> #include<queue> #include<vec...

u011441044的博客 482

手把手教你:如何为自制的STM32H7飞控板适配PX4固件(基于NuttX)

本文详细介绍了如何为自制的STM32H7飞控板适配PX4固件,基于NuttX系统进行移植。从硬件设计规范到软件环境配置,再到PX4固件的移植与调试,提供了完整的实战指南。特别分享了如何复用FMU-v6u参考设计以节省开发时间,并解决了常见问题,帮助开发者快速实现高性能飞控系统的搭建。

weixin_27697385的博客 475

7-6-Root of AVL Tree-编程题

7-6-Root of AVL Tree-编程题解题代码测试结果问题整理 解题代码 #include<stdio.h> #include<stdlib.h> typedef struct tnode* ptn; struct tnode { int data; ptn left, right; int height; }; ptn CreatTree(int K); ...

Aruasg的博客 225

Kisssoft软件在行星齿轮设计上的初试

行星齿轮传动与链传动相比较,具有质量小,体积小,承载能力强,传动比大,传动效率高等优点,但在行星齿轮传动种种优点下,不可避免的带来一些缺点,对其材料的要求过高,在追求传动比大而体积小的同时,其传动结构大大的复杂化,以及在制造和安装过程中较困难,对于行星齿轮传动设计来说,不仅应该了解其优点,而且应该在设计中,充分发挥其优点,且把其缺点降低到最低的限度。从而才能设计出性能优良的行星齿轮传动装置,为我们赛车提供更加强大的动力保证。 Kisssoft软件为我们行星齿轮传动设计提供了一体化方案,从设...

m0_69808569的博客 1万+

使用STM32制作智能窗帘控制

以上就是一个简单的基于STM32的智能窗帘控制代码案例。通过感知光线强度和控制步进电机的旋转,我们可以实现智能窗帘的自动开启和关闭。通过定时器的中断来控制步进电机的旋转,从而实现窗帘的开启和关闭动作。最后,我们需要实现主函数和中断函数。在主函数中,我们需要初始化硬件资源,然后进入一个无限循环来不断检测光敏电阻的值,并根据其值来控制窗帘的开启和关闭。接下来,我们需要编写功能函数,用于控制窗帘的开启和关闭。然后,我们需要配置STM32开发环境,并创建一个新的工程。接下来,我们初始化相关的硬件资源。

2401_85258012的博客 276

程序员面试刷编程题题型及对应思路

本文将列举程序员面试中常见的编程题题型和对应的解题思路,以供大家备考和练习,提高面试技能。

Cluluxiu的博客 686

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

uva10562——看图写树(树的先序遍历!)

妈蛋,这题坑了我2个多小时。。终于过了。。 做的时候主要在这几个WA点卡住了: 1.读取行数的时候忘记减去“#”的行数了 2.没有考虑到空树的情况 3.递归的时候没有判断右边界值‘\0’ 4.被样例误导了,以为节点只能是字母。。。。。。一个发现: 用 isspace() 或者 isalpha() 比手动判断要快! 本题解法: 在读取到节点的时候,如果发现下面有字符‘|’,把此节点当作根

希望更好 792

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构-C语言版本(五)树

树是一种非线性的分层数据结构,由节点和边组成。

qq_43470128的博客 552

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

电子科技大学Icoding编程题解析与学习笔记

链表和顺序表是数据结构的基础,常见的操作包括查找、删除、合并等。在链表倒数查找题目中,可以使用快慢指针技巧,快指针先走n步,然后两个指针同时移动,当快指针到达末尾时,慢指针指向的就是倒数第n个节点。树转二叉树时,要注意将每个节点的第一个孩子作为左孩子,右兄弟作为右孩子的规则。平台提供了完整的开发环境,无需配置即可直接运行代码,特别适合算法和数据结构的实验验证。:对于复杂的数据结构,可以先在纸上画出结构图,再对照编写代码。:思考不同实现方式的时间复杂度和空间复杂度,选择最适合当前问题的解决方案。

GreenLeaf78的博客 841

【烈日炎炎战后端】编程题总结(13.3万字)

这里写目录标题专题总结【代码规范】【树】<序>1 [二叉树的前、中、后序遍历(递归) ](https://leetcode-cn.com/problems/binary-tree-inorder-traversal)2 [二叉树的前、中、后序遍历(非递归) ](https://leetcode-cn.com/problems/binary-tree-inorder-traversal)3 二叉树的层次遍历(BFS)4 [**合并二叉树** ](https://leetcode-cn.

徐明晓的博客 1148

python数组面试_聊聊我的一次真实 Python 面试经历

原标题:聊聊我的一次真实 Python 面试经历 首先我挺喜欢这家公司的面试风格的,也是比较务实的吧。无奈自己的心理因素和技术水平都不好,导致面试失败。再接再厉吧1.一上来就是编程题三连1.1 大概意思就是:俩列表a b,如果a中的元素在b中,那么就保存此元素在a中的索引值,最后统一输出所有索引值。要求:时间复杂度小于O(n) 这个我当时想到的是循环遍历a,然后判断是否i in b,但是这个时间复...

weixin_39846378的博客 117

【编程题】7-3 树的同构

判断二叉树的同构,其解决方法与判断二叉树是否相同类似,并且天然地可以使用递归的解法解决。关于树与二叉树的问题,如果可以用迭代解决的优先选择迭代,不过有时候迭代的思路并不好想,或者迭代的思路很复杂,那么使用递归解决就好。

木又可可的博客 1222

盘点互联网公司最常见的面试编程题

点击上方“Python与算法社区”,选择“星标”公众号第一时间速享原创干货1突破编程题互联网公司面试,笔试环节或第一面往往都是现场做编程题。很多面试的老铁反映说,败在了...

算法channel 4219

Java笔试常见编程题,你值得拥有

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!

2301_81749759的博客 1018

数据结构中链表、树、图相关编程题笔记

一、结构体 数据结构中结构体很重要,所以先了解结构体相关知识点。 struct LNode{ int data; char name[20]; }; //struct是定义结构体的关键字,LNode是结构体的名称 //如为上个结构体创建一个对象——struct LNode n; //这里创建对象必须加上结构体关键字struct。n就是对象了,可直接使用 struct LNode{ int data; char name[20]; }n; //这是在定义的时候创建了对象n typedef st

weixin_42684368的博客 1372
上一篇: 有环单链表,求环长、链长;求两链表的交点
下一篇: 用于神经网络的图像数据预处理(Image Data Pre-Processing for Neural Networks)【翻译】
Subson
博客等级 码龄12年 31粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值