ARTS 打卡第七周

ARTS 打卡week07

在这里插入图片描述

每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章

Algorithm

序号 题目名称 掌握程度
0098 验证二叉搜索树 100%
0235 二叉搜索树的最近公共祖先 100%
0236 二叉树的最近公共祖先 100%
验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索 树。

假设一个二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例:
示例一:
输入:
    2
   / \
  1   3
输出: true

示例二:
输入:
    5
   / \
  1   4
     / \
    3   6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
     根节点的值为 5 ,但是其右子节点值为 4 。
解析:

0098_validate_BST.go

/* 
** in-ordering traverse binary search tree slice is a ordered slice
** using that propertity could validate binary search tree
*/
type TreeNode struct {
   
	Val int
	Left *TreeNode
	Right *TreeNode
}

func isValidBST01(root *TreeNode) bool {
    
	treeNodeValue, treeNodeStack := []int{
   }, []*TreeNode{
   }
	
	
	if root == nil {
   
		return true
	}
	
	if root.Left == nil && root.Right == nil {
   
		return true
	}

	// inorder_travering
	for root != nil || !isEmpty(treeNodeStack) {
   
		for root != nil {
   
			// push
			treeNodeStack = append(treeNodeStack, root)
			root = root.Left
		}

		if !isEmpty(treeNodeStack) {
   
			// pop
			tempNode := treeNodeStack[len(treeNodeStack)-1]
			treeNodeStack = treeNodeStack[:len(treeNodeStack)-1]
			treeNodeValue = append(treeNodeValue, tempNode.Val)
			root = root.Right
		}
	}

	for i := 0; i < len(treeNodeValue) - 1; i++ {
   
		if treeNodeValue[i] 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值