剑指offer 算法 (举例让抽象具体化)
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解析:从上往下遍历 root结点 左结点 右结点 每遍历一个依次存入队列 由队列的先进先出 依次便可逐层存结点入数组中
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:vector<int> PrintFromTopToBottom(TreeNode *root) {vector<int> Array;if(!root)return Array;vector<TreeNode *> Q;int cnt=0;Q.push_back(root);while( cnt< Q.size() ){TreeNode *Node=Q[cnt++];Array.push_back(Node->val);if(Node->left)Q.push_back(Node->left);if(Node->right)Q.push_back(Node->right);}return Array;}
};
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
解析:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
class Solution {
public:bool VerifySquenceOfBST(vector<int> sequence) {int length = sequence.size();if( length == 0 )return false;int start = 0;int end = length-1;return Tree( sequence , start , end );}bool Tree( vector<int> sequence , int start , int end ){if( start == end || start == ( end + 1 ) )return true;int root = sequence[end];int i , j;for( i = start ; i < end ; i ++ )//左子树{if( sequence[ i ] > root )break;}for( j = i ; j < end ; j ++ )//判断是否符合右子树{if( sequence[ j ] <= root )return false;}bool leftT = Tree( sequence , start , i - 1 );bool rightT = Tree( sequence , i , end - 1 );return leftT && rightT ;}
};
题目描述
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {vector<vector<int> > array;vector<int> v;if( root == NULL || expectNumber == 0 )return array;int sum=0;preTree(root,expectNumber,array,v,sum);return array;}void preTree(TreeNode* root,int expectNumber,vector<vector<int> > &array,vector<int> v,int sum){if( root == NULL )return;sum += root->val;v.push_back(root->val);if( root->left == NULL && root->right == NULL ){if( sum == expectNumber )array.push_back(v);return;}preTree( root->left, expectNumber, array , v , sum );preTree( root->right, expectNumber, array , v , sum );}
};
剑指offer 算法 (举例让抽象具体化)相关推荐
- java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...
推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...
- 道指mt4代码_剑指offer算法题052:正则表达式匹配
小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...
- 剑指offer算法题028:数组中出现次数超过一半的数字
小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...
- 剑指offer算法题分析与整理(一)
下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.数组中的逆序对 2.二维数组中的查找 3.顺时针打印矩阵 ...
- 剑指offer算法合集
汇总:Android小白成长之路_知识体系汇总[持续更新中-] 简述 算法,不知道是多少程序猿的痛,对我而言也如此,因此今天开始记录那些刷过的算法题,其中最经典的莫过于剑指offer里的题目,精妙的解 ...
- 剑指offer算法题分析与整理(二)
下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.序列化二叉树 2.带记忆的DFS搜索 3.坐标数位和不大 ...
- LeetCode剑指offer算法备战春招-包含min函数的栈
剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...
- 剑指offer 算法 (抽象建模能力)
题目描述 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S,输入n,打印出S的所有可能的值出现的概率. 解析:用两个数组来存储骰子点数的每一个总数出现的次数.在一个循环中,第一个数组中的第n个数字表 ...
- 剑指offer 算法 (画图让抽象问题形象化)
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...
最新文章
- linux时mysql报1290_rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290
- Pat乙级1084 外观数列
- 作业30-首页列表显示全部问答,完成问答详情页布局
- php流程控制的类型有哪些,流程控制包括哪些内容
- SpringBoot项目去除druid监控的底部广告
- mysql 优化 案例_[MySQL优化案例]系列 -- OPTIMIZE的威力
- Java fianl关键字的理解
- yaml文件解析:c++篇
- struts文件上传 java_Struts上传文件
- Java基础学习总结(83)——Java泛型总结
- java se 试题_javaSE试题
- CS224N笔记——TensorFlow入门
- IGBT双脉冲测试原理
- 通用数据权限管理系统设计
- 计算机一级ppt加水印,2017年计算机一级WPS辅导:WPSOffice2007中插入水印和改变背景色...
- OA审批流程是什么?如何提升OA审批流程效率?
- 计算机ip如何设置,win7电脑ip地址怎么设置_win7电脑ip怎么设置-win7之家
- Android专业DJ,著名音乐游戏《DJ英雄》登陆Android Market
- vxworks,bootrom启动时由7s减少到1s
- 知道创宇CTO杨冀龙:网络安全人才决定行业格局