剑指offer 算法(链表 树)
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
解析:逆转链表,与栈顺序一致,可以用辅助栈解决这个问题。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:vector<int> printListFromTailToHead(struct ListNode* head) {vector<int> stack;vector<int> result;while(head){stack.push_back(head->val);head = head->next;}while(!stack.empty()){int val = stack.back();result.push_back(val);stack.pop_back();}return result;}
};
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
/*** Definition for binary tree* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public: struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {int size = pre.size();if(size == 0){return NULL;}return PreInBuildTree(pre,in,0,0,size);}
private:TreeNode* PreInBuildTree(vector<int> pre,vector<int> in,int preIndex,int inIndex,int size){if(size == 0){return NULL;}// 根节点TreeNode* root = new TreeNode(pre[preIndex]);// 寻找根节点在中序遍历数组的下标int index = 0;for(int i = 0;i < size;++i){// 注意:inorder[inIndex+i]if(pre[preIndex] == in[inIndex+i]){index = inIndex+i;break;}}// 左子树个数int leftSize = index - inIndex;// 右子树个数int rightSize = size - leftSize - 1;// 左子树root->left = PreInBuildTree(pre,in,preIndex+1,inIndex,leftSize);// 右子树root->right = PreInBuildTree(pre,in,preIndex+1+leftSize,index+1,rightSize);return root;}
};
剑指offer 算法(链表 树)相关推荐
- 剑指offer 算法(树的两个节点的最低祖先)
解析:先序遍历树,用两个链表保存遍历所走的路径,再求两个链表的最低公共结点 #include <stdio.h> #include <vector> #include < ...
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
- java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...
推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...
- 道指mt4代码_剑指offer算法题052:正则表达式匹配
小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...
- 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点
[LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...
- 剑指offer -- 反转链表
先摆明重要性 剑指offer -- 反转链表 校招原题 解法一:迭代 翻转 即 将所有节点的next指针指向前驱节点. 由于是单链表,我们在迭代时不能直接找到前驱节点,所以我们需要一个额外的指针保存 ...
- 剑指offer算法题028:数组中出现次数超过一半的数字
小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...
- 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)
19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...
- 剑指offer算法题分析与整理(一)
下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.数组中的逆序对 2.二维数组中的查找 3.顺时针打印矩阵 ...
- 剑指offer算法合集
汇总:Android小白成长之路_知识体系汇总[持续更新中-] 简述 算法,不知道是多少程序猿的痛,对我而言也如此,因此今天开始记录那些刷过的算法题,其中最经典的莫过于剑指offer里的题目,精妙的解 ...
最新文章
- 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...
- 数据科学和人工智能技术笔记 十二、逻辑回归
- mysql必会语法_sql语法:sql必读必会(二)mysql中的函数大全
- ESP32开源驱动库Easyio的使用,基于ESP-IDF开发框架,非Arduino
- python打印9宫格,25宫格等奇数格,且横竖斜相加和相等
- Codeforces 808G. Anthem of Berland
- 完全卸载vs2013 2015
- Word2013实战技巧
- 通过Web界面访问华为USG6000防火墙+安全策略
- 微信聊天记录数据分析
- 权限管理模块数据库设计
- 韩语在线翻译图片识别_Text Scanner for Mac(ocr文字识别工具)
- 挺全的HTML、CSS整理笔记
- 7个实战技巧帮你提升前端技术水平!
- 简单的视频剪辑入门制作软件,适合新手哦,快快收藏
- iOS性能优化-UI卡顿检测
- [Canvas系列]Canvas简单线条绘制_02
- 鸢尾花决策树分类及可视化
- PhpSpreadsheet常用操作
- 罗振宇2018《时间的朋友》--小趋势