第5章:LeetCode--算法:DFS-BFS深度优选遍历和广度优先遍历(3)
时间:2019-08-29
本文章向大家介绍第5章:LeetCode--算法:DFS-BFS深度优选遍历和广度优先遍历(3),主要包括第5章:LeetCode--算法:DFS-BFS深度优选遍历和广度优先遍历(3)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
https://www.jianshu.com/p/b086986969e6
DFS--需要借助stack实现 stack.push stack.pop
BFS--需要借助队列queue
stack-->先进后出, queue-->先进先出
LeetCode -- 100. Same Tree
// Recursively bool isSameTree1(TreeNode* p, TreeNode* q) { if (p && q) return p->val==q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right); return p == q; } // BFS + queue bool isSameTree(TreeNode* p, TreeNode* q) { queue<pair<TreeNode*, TreeNode*>> myQueue; myQueue.push(pair<TreeNode*, TreeNode*>(p, q)); while (!myQueue.empty()) { p = myQueue.front().first; q = myQueue.front().second; if(!p ^ !q || (p && q && p->val != q->val)) break; myQueue.pop(); if(p && q) { myQueue.push(pair<TreeNode*, TreeNode*>(p->left, q->left)); myQueue.push(pair<TreeNode*, TreeNode*>(p->right, q->right)); } } return myQueue.empty(); } // DFS + stack bool isSameTree3(TreeNode* p, TreeNode* q) { stack<pair<TreeNode*, TreeNode* >> myStack; myStack.push(pair<TreeNode*, TreeNode*>(p, q)); while (!myStack.empty()) { p = myStack.top().first; q = myStack.top().second; if (!p ^ !q || (p && q && p->val != q->val)) break; myStack.pop(); if (p && q) { myStack.push(pair<TreeNode*, TreeNode*> (p->right, q->right)); myStack.push(pair<TreeNode*, TreeNode*> (p->left, q->left)); } } return myStack.empty(); }
前序遍历(root->left->right)、中序遍历(left->root->right)、后序遍历(left->right->root),指root节点访问顺序。
原文地址:https://www.cnblogs.com/feliz/p/10996018.html
- 在Go中对gRPC+ProtoBuf与Http+Json进行基准测试
- Achartengine.jar绘制动态图形一 --饼图
- 工具| 关于Python线程和队列使用的小思考
- Java中list<Object[]>、list<Student>、list<Map<String,String>>排序
- Java-单例模式详解(图文并茂,简单易懂)
- Fragment生命周期及实现点击导航图片切换fragment,Demo
- 《GO IN ACTION》读后记录:GO的并发与并行
- SharedPreferences 存List集合,模拟数据库,随时存取
- Servlet与Jsp的结合使用实现信息管理系统一
- Mac下nvm管理node.js版本问题
- 自定义tab吸顶效果一(原理)
- OpenGL ES学习001---绘制三角形
- Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失
- 披着狼皮的羊——寻找惠普多款打印机中的RCE漏洞
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 特征锦囊:一文介绍特征工程里的卡方分箱,附代码实现
- C++11知识点总结(全面解析C++11经常考到的知识点)
- C++特殊类设计+类型转换
- STL之空间配置器
- C++之STL标准模板库——从入门到精通
- unorder(哈希-海量数据处理)
- 面试题:简单实现一个shared_ptr智能指针
- C++中priority_queue优先队列
- 腾讯2019秋招笔试真题
- 【leetcode】43.1~n整数中1出现的次数
- 验证回文字符串II
- 想知道HTML语法结构?看这一篇就够了(超全解析html语法)
- 一文了解CSS样式表结构
- Java Script脚本语言入门(上)
- JavaScript脚本语言入门(下)