剑指 Offer 07. 重建二叉树 题目链接 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 前序遍历的第一个节点是根节点,然后根据根节点在中序遍历数组中的位置,该位置左边是左子树的节点数量,该位置右边是右子树的节点数量。 C++: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right...
条件:【1】需要将原来树的节点重新封装,封装后的结构中具有对原来树节点的一个flag描述;【2】利用STL中的栈容器实现对节点的入栈以及出栈操作; 拿下图为例: 注意:该段代码实现的是前序遍历,如果想要实现中序/后序遍历 只需将第48-49行代码与前俩行代码调换位置即可。该段代码没有对new过的节点进行delete。(暂时不知道怎么delete !-!)。 1 #include<iostream>2 #include<stack>3 using namespace std;4 5 const int...
假设有如下数组: A = {15,10,6,1} B = {1} C = {20,5} 对数组进行从小到大的排序,随机取一个数组里的值记为BaseValue, 然后将所有小于BaseValue值放在左边,所有大于BaseValue的放在右边(相等的就不动了)。 对于数组B来说不用进行操作就完成了目标,对于C来说进行一次上述操作就能完成排序。 但是对A数组来说就不是那么简单了。 我们用递归的方式来对数组进行拆分,直到数组长度<= 1(也就是B数组一样的状态) 1.先选择数组第...
运行结果 代码如下 1 #include <bits/stdc++.h>2 using namespace std;3 const int MAX = 1024;4 const char *LINE32 = "--------------------------------";5 const bool PRINT_DETAILS = false; 6 long long n, cnt = 0;// n表示皇后数量,cnt表示方案数量7 int vis[3][2*MAX+1];8 //v[0][]、v[1][]、v[2][]分别表示列、主对角线、副对角线是否存在皇后9 // 为0时表示无皇后,非0则表示有,且v[0][4]=2表示第四列第二行存在皇后...
全排列递归详解C++一:全排列递归详解C++二:本人介绍三:代码四:代码详细图解五:总结 一:全排列递归详解C++ 您们好!本人为刚刚进入社会的小白! 如有讲解不到位,还望各位高猿不吝赐教! 二:本人介绍 首先是本人介绍与本文无关,您可以直接跳过,望游戏开发界的大佬留意一下:本人为2020届毕业生面临找工作的压力正在寻找一份(unity或者H5)游戏客户端开发岗位.(初级或者实习生) 本人在对于该岗位技术方面算中等水平,希望能有公司接纳,本人愿...
题意 给定一个数组,里面有n位正整数,要从这个数组里面选取K个数,使得它们的和为S,问有多少种可能的取法; Input 第一行,一个整数T(T<=100),指示测试用例的数量。 对于每个情况,有两行。 第一行,三个整数表示n,K和S.其中K<=n<=16. 第二行n个整数表示n个元素的数组。 数据保证所有数字都可以以 32 位整数存储。 Output 对于每种情况,输出一个整数,代表可能的取法,独占一行。 Sample Input 1 10 3 10 1 2 3 4 5 6 7 8 9 10...
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the node’s key. The right subtree of a node contains only nodes with keys greater than or equal to the node’s key. Both the left and right subtrees must also be binary search trees. If we swap the left and right subtrees of...
1 //C++深度优先搜索(递归树模拟)2 #define _CRT_SECURE_NO_WARNINGS3 #include <iostream>4 #define MAX_N 10005 using namespace std;6 int a[MAX_N];7 int n,k;8 9 //已经从前i项得到了和sum,然后对于i项之后的进行分支 10 bool dfs(int i,int sum) 11 { 12 //如果前n项都计算过了 ,则返回sum是否与k相等 13 if(i==n) 14 { 15 return sum==k; 16 } 17 18 //不加上a[i]的情况...
数独 程序地址https://github.com/papicheng/blog/tree/master/%E6%95%B0%E7%8B%AC 一、游戏规则介绍: 数独是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据99盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。 ?程序介绍:数独生成程序(sudokuGenerate.cpp)生成数独的算法思想:回溯法,递归实现深度优先搜索 函数简介:void...
#include <stack> using namespace std;struct Node {int val;Node *next; };Node * creat_link() {Node *head=NULL;Node *current=NULL;Node *tmp=NULL;int val=0;int num_node=10;for(int i=0;i<num_node;i++){val=i+1;if(i==0){current=(Node*)new(Node);current->val=val;current->next=NULL;head=current;}else{tmp=(Node*)new(Node);tmp->val=val;tmp->next=NULL;current->next=tmp;current=current->next;}}return head; }v...
放苹果把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?5,1,1和1,5,1是同一种分法。 输入:第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含两个整数M和N,以空格分开。1 <= M, N <= 10。 输出:对输入的每组数据M和N,用一行输出相应的K。 样例输入: 1 7 3 样例输出: 8#include<iostream> using namespace std;int f(int m, int n) {if (n > m)return f(m, m);//当盘子数大于...
#include <iostream>using namespace std;void foo() {static int count = 0;if(count<5){count++;cout<<count<<endl;foo();}else{cout<<"count > 5"<<endl;} }int main() {foo(); //increment count from 0 to 5foo(); //count is already at 5return 0; } 这是一个例子
c++中求1!+2!+3!+…+20!(不用递归) #include "stdafx.h" #include<iostream> using namespace std;int _tmain(int argc, _TCHAR* argv[]) {int n ;double fac=1,sum=0;//fac用来存放阶乘后的值,sum用于存放累加和for(n=1;n<=20;n++){fac*=n;sum+=fac;}cout<<"1!+2!+3!+...+20!="<<sum<<endl;return 0; }
JAVA: import java.io.File; public class DeleteDirectory { /** * 删除空目录 * @param dir 将要删除的目录路径 */ private static void doDeleteEmptyDir(String dir) { boolean success = (new File(dir)).delete(); if (success) { System.out.println("Successfully deleted empty directory: " + dir); } else { System.out.println("Failed to de...
这个算法比较难想,是把表达式expression看成用+号或-分开 term看成用*号或/号分开 factor看成括号或一个数,形成递归#include<iostream> #include<cstring> #include<cstdlib> using namespace std; int factor_value(); // 求一个因子的值 int term_value(); // 求一个项的值 int expression_value(); // 求一个表达式的值int main() {cout << expression_value() << endl;return 0; }int expression_value() //求一...