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

二叉树搜索

这里写自定义目录标题

#include <iostream>
#include <vector>using namespace std;struct Node{int value;Node* left_node;Node* right_node;Node(int v){value = v;left_node = nullptr;right_node = nullptr;    }
};bool findNode(Node* node, int target_node, vector<int>& path){if (!node) return false;cout << "---node->value : "<< node->value << endl; // save pathpath.push_back(node->value);// find target nodeif (node->value == target_node){cout << "---find target_node--- "<< endl;   return true;}// cout << "---2--- "<< endl;    // 如果左分支或者右分支找到了if (findNode(node->left_node, target_node, path)){return true;} if (findNode(node->right_node, target_node, path)){return true;}path.pop_back();return false;
}void findTreePath(Node* root_node, int curr_node ,int goal_node, vector<int>& path){// find curr node path vector<int> path1;bool ret = findNode(root_node, curr_node, path1);cout << "ret: " << ret << endl;cout << "path1," << path1.size() << ":";for (auto p: path1){cout << p << " --> " ;}cout << endl;vector<int> path2;// find goal node path findNode(root_node, goal_node, path2);cout << "path2" << endl;for (auto p: path2){cout << p << " --> " ;}cout << endl;// pingjie pathfor (int i = path1.size()-1; i >= 0; i--){path.push_back(path1[i]);}for (int i = 1; i < path2.size(); i++){path.push_back(path2[i]);}}int main(){Node* root_node  = new Node(4);root_node->left_node = new Node(3);root_node->right_node = new Node(5);root_node->left_node->left_node = new Node(1);root_node->left_node->right_node = new Node(2);root_node->right_node->left_node = new Node(6);root_node->right_node->right_node = new Node(7);int curr_node = 1;int goal_node = 7;vector<int> path;findTreePath(root_node, curr_node, goal_node, path);cout << "Total path:" << endl;for (auto p: path){cout << p << " --> " ;}cout << endl;return 0;
}

输出

---node->value : 4
---node->value : 3
---node->value : 1
---find target_node--- 
ret: 1
path1,3:4 --> 3 --> 1 --> 
---node->value : 4
---node->value : 3
---node->value : 1
---node->value : 2
---node->value : 5
---node->value : 6
---node->value : 7
---find target_node--- 
path2
4 --> 5 --> 7 --> 
Total path:
1 --> 3 --> 4 --> 5 --> 7 --> Normal program termination. Exit status: 0

http://www.mrgr.cn/news/46925.html

相关文章:

  • 7 分布式定时任务调度框架
  • VUE3 一些常用的 npm 和 cnpm 命令,涵盖了修改源、清理缓存、修改 SSL 协议设置等内容。
  • 多线程与多进程性能分析与最佳实践
  • ThreeJs练习——载入外部模型
  • K8s 之 Pod 高级用法(Advanced Usage of Pods in Kubernetes)
  • 微信小程序-Docker+Nginx环境配置业务域名验证文件
  • 解决 MySQL 连接数过多导致的 SQLNonTransientConnectionException 问题
  • 负载均衡(Load Balancing)
  • 华为OD机试真题-最佳对手-2024年OD统一考试(E卷)
  • 【docker】存储之目录挂载和卷映射
  • mysql主从配置
  • SpringCloud 集成 OpenFeign 实战指南
  • 数据库迁移中的权限问题及解决方法——以Error 1142为例
  • 深入理解HTTP Cookie
  • FineReport报表查询初始化直接显示表头内容
  • 基于SSM的民宿管理系统【附源码】
  • 基于SpringBoot vue的CSGO赛事管理系统设计与实现
  • Python 静态方法与类方法详解
  • 全面了解入侵防御系统(IPS)原理
  • jdk 11.0.8 配置 classpath
  • 开源气象大模型的原理解析
  • 十年的代购经验总结一套完善的代购集运系统需要哪些功能必备哪些优势?
  • Vue打印网页pdf,并且有按钮调整缩小放大
  • SeaTunnel Web1.0.0安装
  • Unity转Unreal5之从入门到精通 Spline(样条曲线)组件的使用
  • 六西格玛设计DFSS方法论在消费级无人机设计中的应用——张驰咨询