数据结构有哪些类型和特点?

更新于
2026-10-03 22:32:21
2阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计647个文字,预计阅读时间需要3分钟。

各位老友!欢迎来到本期博文!今天,为大家讲解两道关于二叉树的经典题目:(OJ)1. 对称二叉树 + 1. 对称二叉树

1. 对称二叉树给定一个二叉树,检查它是否对称。

分析:- 对称二叉树的特点是,从根节点到左右子树的每个节点,左子节点的值都应该等于右子节点的值。- 我们可以采用递归的方法,比较左右子树的对应节点值。

以下是伪代码:

function isSymmetric(root): if root is null: return true if root.left is null and root.right is null: return true if root.left is not null and root.right is not null: if root.left.value !=root.right.value: return false return isSymmetric(root.left.left, root.right.right) and isSymmetric(root.left.right, root.right.left) return false

2. 对称二叉树给定一个二叉树根节点root,检查是否对称。

分析:- 对称二叉树的特点是,从根节点到左右子树的每个节点,左子节点的值都应该等于右子节点的值。- 我们可以采用递归的方法,比较左右子树的对应节点值。

以下是伪代码:

function isSymmetric(root): if root is null: return true if root.left is null and root.right is null: return true if root.left is not null and root.right is not null: if root.left.value !=root.right.value: return false return isSymmetric(root.left.left, root.right.right) and isSymmetric(root.left.right, root.right.left) return false

各位老友!!欢迎来到本期博文!!今天,为大家讲解两道 二叉树(OJ)

1.对称二叉树

给定一个二叉树根结点 root, 检查是否轴对称

以下是情况分析 :>

另外,不能忘记空结点的情况!!

那么代码如下 :>

typedef int BTDataType; typedef struct BinaryTreeNode { BTDataType data; struct BinaryTreeNode* left; struct BinaryTreeNode* right; }BTNode; bool _isSymmetric(BTNode* left, BTNode* right) { if(left == NULL && right == NULL) { return false; } if(left == NULL && right == NULL) { return false; } if(left ->data != right ->data) { return false; } return _isSymmetric(left ->left, right ->right) && _isSymmetric(left ->right, right ->left); } bool isSymmetric(BTNode* root) { if(root == NULL) { return true; } _isSymmetric(root ->left, root ->right); }

为了更好的观感体验,特此附上有色彩的代码图样 :>

以上较为难以理解的部分,如下 :>

各位好友,上述“左边到左边”, “右边到右边”是啥意思?

本文共计647个文字,预计阅读时间需要3分钟。

各位老友!欢迎来到本期博文!今天,为大家讲解两道关于二叉树的经典题目:(OJ)1. 对称二叉树 + 1. 对称二叉树

1. 对称二叉树给定一个二叉树,检查它是否对称。

分析:- 对称二叉树的特点是,从根节点到左右子树的每个节点,左子节点的值都应该等于右子节点的值。- 我们可以采用递归的方法,比较左右子树的对应节点值。

以下是伪代码:

function isSymmetric(root): if root is null: return true if root.left is null and root.right is null: return true if root.left is not null and root.right is not null: if root.left.value !=root.right.value: return false return isSymmetric(root.left.left, root.right.right) and isSymmetric(root.left.right, root.right.left) return false

2. 对称二叉树给定一个二叉树根节点root,检查是否对称。

分析:- 对称二叉树的特点是,从根节点到左右子树的每个节点,左子节点的值都应该等于右子节点的值。- 我们可以采用递归的方法,比较左右子树的对应节点值。

以下是伪代码:

function isSymmetric(root): if root is null: return true if root.left is null and root.right is null: return true if root.left is not null and root.right is not null: if root.left.value !=root.right.value: return false return isSymmetric(root.left.left, root.right.right) and isSymmetric(root.left.right, root.right.left) return false

各位老友!!欢迎来到本期博文!!今天,为大家讲解两道 二叉树(OJ)

1.对称二叉树

给定一个二叉树根结点 root, 检查是否轴对称

以下是情况分析 :>

另外,不能忘记空结点的情况!!

那么代码如下 :>

typedef int BTDataType; typedef struct BinaryTreeNode { BTDataType data; struct BinaryTreeNode* left; struct BinaryTreeNode* right; }BTNode; bool _isSymmetric(BTNode* left, BTNode* right) { if(left == NULL && right == NULL) { return false; } if(left == NULL && right == NULL) { return false; } if(left ->data != right ->data) { return false; } return _isSymmetric(left ->left, right ->right) && _isSymmetric(left ->right, right ->left); } bool isSymmetric(BTNode* root) { if(root == NULL) { return true; } _isSymmetric(root ->left, root ->right); }

为了更好的观感体验,特此附上有色彩的代码图样 :>

以上较为难以理解的部分,如下 :>

各位好友,上述“左边到左边”, “右边到右边”是啥意思?