文章
7
粉丝
0
获赞
0
访问
3.8k
(1)对二叉搜索树进行遍历,如中序遍历。对于每个遍历到的结点,判断其是否同时存在左子树和右子树。若有,分别计算左子树中节点与该结点的最小距离和右子树中结点与该结点的最小距离,然后比较这两个距离是否相等,若相等则计数器加一,最后返回计数器的值。
(2)
#include <iostream>
// 二叉树结点定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 辅助函数,计算树中结点与给定值的最小距离
int minDistance(TreeNode* root, int val) {
if (root == NULL) {
return INT_MAX;
}
if (root->val == val) {
return 0;
}
if (root->val > val) {
return std::min(abs(root->val - val), minDistance(root->left, val));
} else {
return std::min(abs(root->val - val), minDistance(root->right, val));
}
}
// 统计满足条件的结点数
int countNode(TreeNode* root) {
if (root == NULL) {
...
登录后发布评论
暂无评论,来抢沙发