Day17 二叉树 part05

49 阅读2分钟

概念

刷题

654. 最大二叉树

leetcode.cn/problems/ma…

image.png

617. 合并二叉树

leetcode.cn/problems/me…

中序遍历

image.png

代码优化:

  1. 不生成新的树,直接修改root1
  2. 遍历root1,当root1 为空的时候,直接返回root2,不再继续遍历root2
func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {

    if root1 == nil {return root2}

    if root2 == nil {return root1}

    root1.Val += root2.Val

    root1.Left = mergeTrees(root1.Left, root2.Left)

    root1.Right = mergeTrees(root1.Right, root2.Right)

    return root1

}

  1. 二叉搜索树中的搜索

leetcode.cn/problems/se…

image.png

优化:

二叉搜索树是一个有序树:

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉搜索树

这就决定了,二叉搜索树,递归遍历和迭代遍历和普通二叉树都不一样。

本题,其实就是在二叉搜索树中搜索一个节点。那么我们来看看应该如何遍历。

image.png

  1. 验证二叉搜索树

leetcode.cn/problems/va…

后序遍历

image.png

优化:

二叉搜索树的特性: 中序遍历可以遍历出一个从小到大排序的数组

中序遍历 + 双指针 (preNode: 遍历的前一个节点的指针, node:当前遍历的节点指针)

image.png

总结

对于golang获取int类型的最小整数:

在Go语言中,int 类型的最小值取决于你的操作系统和编译器。这是因为 int 类型的长度在不同的平台和编译器中可能会有所不同。在Go语言中,int 通常是32位的,但在某些64位平台上,它也可以是64位的。

为了获取 int 类型能表示的最小值,你可以使用 math 包中的常量:

  1. 对于32位系统(如果你的 int 是32位的,比如在某些32位操作系统上或者通过设置环境变量使得 int 为32位),你可以使用 math.MinInt32
  2. 对于64位系统(如果你的 int 是64位的,比如在大多数现代操作系统上),你应该使用 math.MinInt64

下面是如何使用这些常量的示例: