SJCHEN

时光,不会辜负每一个平静努力的人

0%

c++11使用auto来做自动类型推导,编译器会在编译期间自动推导出变量的类型。

阅读全文 »

引用常说的是“左值引用”,C++11中新增了一种引用,即“右值引用”。

阅读全文 »

173. 二叉搜索树迭代器

实现一个二叉搜索树迭代器类BSTIterator,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root)初始化 BSTIterator类的一个对象。BST的根节点 root会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST中的数字,且该数字小于 BST 中的任何元素。 boolean hasNext()如果向指针右侧遍历存在数字,则返回 true;否则返回 falseint next()将指针向右移动,然后返回指针处的数字。 注意,指针初始化为一个不存在于 BST中的数字,所以对next()的首次调用将返回 BST中的最小元素。

你可以假设 next() 调用总是有效的,也就是说,当调用next() 时,BST的中序遍历中至少存在一个下一个数字。

阅读全文 »

129. 求根节点到叶节点数字之和

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字:

例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。

叶节点 是指没有子节点的节点。

阅读全文 »

3.2 程序编码

有两个文件p1.cp2.c,我们用Unix命令编译这些代码

1
gcc -Og -o p p1.c p2.c

gcc:指GCCC编译器

-Og:告诉编译器使用生成符合原始C语言整体结构的机器代码的优化等级,使用-O1,-O2会导致产出的机器代码变形,难以理解。

gcc命令调用了一整套的程序,将源代码转化成可执行代码。

首先,C预处理器扩展源代码,插入所有用#include命令指定的文件,并扩展所有用#define声明指定的宏。

其次,编译器产出两个源文件的汇编代码,名字为p1.sp2.s

接下来汇编器会将汇编代码转化成二进制目标文件p1.op2.o

阅读全文 »

117. 填充每个节点的下一个右侧节点指针 II

给定一个二叉树

1
2
3
4
5
6
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}

填充它的每个 next指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next指针设置为 NULL

初始状态下,所有 next指针都被设置为 NULL

阅读全文 »