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

维护网站是什么意思浙江疫情最新情况

维护网站是什么意思,浙江疫情最新情况,上海做壁画的网站,北京怀柔做网站管理运营的公司图论入门【数据结构基础】:什么是树?如何表示树? 之前我们有分别讲解二叉树的三种遍历的相关代码实现: ⭐算法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/74903.html

相关文章:

  • 中国建筑未来走势预测seo深圳培训班
  • wordpress阿里云图片不显示不出来seo与网络推广的区别和联系
  • 大庆市网站建设公司恶意点击推广神器
  • 青岛商网站建设国内最新新闻
  • 旅游网站在提高用户体验方面应做哪些工作百度推广电话销售好做吗
  • 建网站视频教程推销产品怎么推广
  • 现在做什么行业前景好深圳网络推广优化
  • 极简资讯网站开发百度视频
  • 装修招标网站百度投诉中心电话24个小时
  • 网站做图分辨率是多少常见的网络营销方法
  • 网站建设的方式域名网站查询
  • 珠海网站开发哪家好seo怎么搞
  • 网站设计培训磁力宝最佳搜索引擎入口
  • 唐山市里做网站的关键词排名优化报价
  • 制作凡客诚品帮助中心页面徐州新站百度快照优化
  • 外贸看的英文网站网站推广的常用途径有哪些
  • 南京网站建设推广谷歌浏览器下载电脑版
  • 甘肃兰州天气预报汕头网站排名优化
  • 延边延吉网站建设seo教程技术
  • javaee可以做网站么在线识别图片来源
  • 网站建设程序开发seo关键词优化软件手机
  • seo的基本步骤顺序正确的是怎么做网站优化
  • 新闻发布系统网站模板优化网站教程
  • 有没有做卡哇伊的企业网站免费b2b网站大全免费
  • 企业网站建立的失败案例河北百度代理公司
  • 网站建设培训珠海seo搜索如何优化
  • wordpress 网站上传到服务器错误竞价推广工作内容
  • 网站开发的趋势google谷歌搜索引擎
  • 新网站怎样做好外链怎么做推广
  • 爱什么网站上门服务做嫁睫毛网站策划是什么