实习冲刺Day11
算法题
二叉树的中序遍历
94. 二叉树的中序遍历 - 力扣(LeetCode)
递归写法
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
void fun(TreeNode*root,vector<int>&res){
if(!root)return;//根节点为空返回
fun(root->left,res);//先左
res.push_back(root->val);
fun(root->right,res);//再→
}
vector<int> inorderTraversal(TreeNode* root) {
//中序遍历左根右的方式
vector<int> res;//空数组用来返回
stack<TreeNode*> stk;//用栈来承接
fun(root,res);
return res;
}
};
二叉树的先序遍历根左右
二叉树的后序遍历左右根
基础知识
C、C++中字符串的存储方式有何不同?
c++中字符串有两种存储方式,一种是存储在char[]数组中,一种是存储在c++封装的string类中
在C中,并没有字符串这个数据类型,而是使用字符数组char[]来保存字符串
在C中也可以使用字符指针来访问一个字符串,通过字符指针指向存放字符串数组的首元素地址来进行访问.
如何在C下比较两个字符串是否相同?
#include<stdio.h>
#include<stdlib.h>
int m_cmp(char* str1, char* str2) {
if (str1 == NULL || str2 == NULL) {
return 2;
}
while (*str1 == *str2) {
if (*str1 == '\0') {
return 0;
}
str1++;
str2++;
}
return (*str1 > *str2) ? 1 : -1;
}
int main() {
char* str1 = "hello", * str2 = "hi";
m_cmp(str1, str2);
return 0;
}