当前位置: 首页 > wzjs >正文

区块链系统app开发黑帽seo培训

区块链系统app开发,黑帽seo培训,电子商务网站建设与管理期末试题,怎么在网站后台做标题的超链接图论入门【数据结构基础】:什么是树?如何表示树? 之前我们有分别讲解二叉树的三种遍历的相关代码实现: ⭐算法OJ⭐二叉树的前序遍历【树的遍历】(C实现)Binary Tree Preorder Traversal ⭐算法OJ⭐二叉树的…

图论入门【数据结构基础】:什么是树?如何表示树?

之前我们有分别讲解二叉树的三种遍历的相关代码实现:
⭐算法OJ⭐二叉树的前序遍历【树的遍历】(C++实现)Binary Tree Preorder Traversal
⭐算法OJ⭐二叉树的中序遍历【树的遍历】(C++实现)Binary Tree Inorder Traversal
⭐算法OJ⭐二叉树的后序遍历【树的遍历】(C++实现)Binary Tree Postorder Traversal

二叉树的三种遍历【树的遍历】(C++实现)Binary Tree Traversal

二叉搜索树(BST)有一个非常重要的性质:中序遍历的结果是一个严格递增的序列。 如果对一棵二叉搜索树进行中序遍历(Inorder Traversal),得到的节点值的序列一定是从小到大严格递增的。

什么是中序遍历?

中序遍历是一种遍历二叉树的方式,顺序是:

  • 遍历左子树。
  • 访问根节点。
  • 遍历右子树。

为什么 BST 的中序遍历是严格递增的?

二叉搜索树的定义是:

  • 左子树的所有节点的值都小于根节点的值。
  • 右子树的所有节点的值都大于根节点的值。
  • 左右子树也必须是二叉搜索树。

根据这个定义,中序遍历的过程会先访问左子树(较小的值),然后访问根节点(中间的值),最后访问右子树(较大的值)。因此,遍历的结果一定是严格递增的。

举个例子

假设有一棵二叉搜索树:

      4/ \2   5/ \1   3

对这棵树进行中序遍历:

  • 遍历左子树 2:
    • 遍历左子树 1,访问 1。
    • 访问 2。
    • 遍历右子树 3,访问 3。
  • 访问根节点 4。
  • 遍历右子树 5,访问 5。
  • 最终的中序遍历结果是:[1, 2, 3, 4, 5],这是一个严格递增的序列。

如何利用这个性质?

我们可以利用中序遍历的结果来判断一棵树是否是二叉搜索树:

  • 对树进行中序遍历,记录遍历的结果。
  • 检查遍历结果是否是严格递增的。
    • 如果是,则说明这是一棵二叉搜索树。
    • 如果不是,则说明这不是一棵二叉搜索树。

98. Validate Binary Search Tree

Given the root of a binary tree, determine if it is a valid binary search tree (BST).

A valid BST is defined as follows:

  • The left subtree of a node contains only nodes with keys less than the node’s key.
  • The right subtree of a node contains only nodes with keys greater than the node’s key.
  • Both the left and right subtrees must also be binary search trees.

A subtree of treeName is a tree consisting of a node in treeName and all of its descendants.

Example 1:
在这里插入图片描述

Input: root = [2,1,3]
Output: true

Example 2:
在这里插入图片描述

Input: root = [5,1,4,null,null,3,6]
Output: false
Explanation: The root node's value is 5 but its right child's value is 4.

C++ 实现

bool isValidBST(TreeNode* root) {vector<int> inorder;inorderTraversal(root, inorder); // 中序遍历for (int i = 1; i < inorder.size(); i++) {if (inorder[i] <= inorder[i-1]) { // 检查是否严格递增return false;}}return true;
}void inorderTraversal(TreeNode* node, vector<int>& result) {if (node == nullptr) return;inorderTraversal(node->left, result); // 遍历左子树result.push_back(node->val);         // 访问根节点inorderTraversal(node->right, result); // 遍历右子树
}

复杂度分析

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n 是二叉树的节点数,每个节点被访问一次。
  • 空间复杂度:
    • 递归解法: O ( n ) O(n) O(n),递归栈的深度。
    • 迭代解法: O ( n ) O(n) O(n),栈的空间。
http://www.dtcms.com/wzjs/182332.html

相关文章:

  • 做网站的哪个好网页平台做个业务推广
  • 小程序开发公司价格表百度seo优化方法
  • 网站推广效果的评估指标主要包括排名优化外包公司
  • 中国人在线观看免费高清seo教学
  • 有经验的邯郸网站建设关键词优化的原则
  • 怎样做网站的反链分类达人介绍
  • 网站商城建设如何避免内部竞争外贸平台推广
  • 网站建设一般用哪种语言开发凡科官网免费制作小程序
  • 亚购物车功能网站怎么做的十堰seo排名公司
  • 福州专业网站建设怎么做江阴网站制作公司
  • 国外做任务的网站国际新闻头条最新消息
  • 做免费外贸网站册域名seo厂家电话
  • 正规网站建设找哪家好chinaz站长素材
  • 别样网站建设产品推广渠道
  • 建设电影推荐网站的项目背景友情链接网站免费
  • 做网站有虚拟服务器搜索关键词分析
  • php做网站常用的网络推广方法有
  • 成都那家做网站好企业管理培训课程视频
  • 公司网站设计的公司广州推广工具
  • 珠海本地网站设计公司安徽搜索引擎优化
  • 怎么做淘宝客采集网站津seo快速排名
  • 网站友情链接怎么做爱站网seo
  • 河南省政府网站建设东莞网站建设最牛
  • 自己做网站好做么市场调查报告
  • 中煤地建设有限公司网站百度快照网站
  • 如何加强省市级门户网站的建设网站建设首页
  • 高仿卡西欧手表网站网店网络营销策划方案
  • 怎么给网站做关键词全网营销思路
  • wordpress 调整字体seo排名优化技术
  • anker 网站建设网址搜索引擎入口