@@ -56,14 +56,11 @@ \subsubsection{栈}
56
56
public:
57
57
vector<int> preorderTraversal(TreeNode *root) {
58
58
vector<int> result;
59
- const TreeNode *p;
60
59
stack<const TreeNode *> s;
61
-
62
- p = root;
63
- if (p != nullptr) s.push(p);
60
+ if (root != nullptr) s.push(root);
64
61
65
62
while (!s.empty()) {
66
- p = s.top();
63
+ const TreeNode * p = s.top();
67
64
s.pop();
68
65
result.push_back(p->val);
69
66
@@ -84,9 +81,8 @@ \subsubsection{Morris先序遍历}
84
81
public:
85
82
vector<int> preorderTraversal(TreeNode *root) {
86
83
vector<int> result;
87
- TreeNode *cur, *prev;
84
+ TreeNode *cur = root , *prev = nullptr ;
88
85
89
- cur = root;
90
86
while (cur != nullptr) {
91
87
if (cur->left == nullptr) {
92
88
result.push_back(cur->val);
@@ -157,8 +153,8 @@ \subsubsection{栈}
157
153
public:
158
154
vector<int> inorderTraversal(TreeNode *root) {
159
155
vector<int> result;
160
- const TreeNode *p = root;
161
156
stack<const TreeNode *> s;
157
+ const TreeNode *p = root;
162
158
163
159
while (!s.empty() || p != nullptr) {
164
160
if (p != nullptr) {
@@ -185,9 +181,8 @@ \subsubsection{Morris中序遍历}
185
181
public:
186
182
vector<int> inorderTraversal(TreeNode *root) {
187
183
vector<int> result;
188
- TreeNode *cur, *prev;
184
+ TreeNode *cur = root , *prev = nullptr ;
189
185
190
- cur = root;
191
186
while (cur != nullptr) {
192
187
if (cur->left == nullptr) {
193
188
result.push_back(cur->val);
@@ -258,11 +253,9 @@ \subsubsection{栈}
258
253
public:
259
254
vector<int> postorderTraversal(TreeNode *root) {
260
255
vector<int> result;
261
- /* p,正在访问的结点,q,刚刚访问过的结点*/
262
- const TreeNode *p, *q;
263
256
stack<const TreeNode *> s;
264
-
265
- p = root;
257
+ /* p,正在访问的结点,q,刚刚访问过的结点*/
258
+ const TreeNode * p = root, *q = nullptr ;
266
259
267
260
do {
268
261
while (p != nullptr) { /* 往左下走*/
@@ -438,13 +431,16 @@ \subsubsection{迭代版}
438
431
public:
439
432
vector<vector<int> > levelOrder(TreeNode *root) {
440
433
vector<vector<int> > result;
441
- if(root == nullptr) return result;
442
-
443
434
queue<TreeNode*> current, next;
444
- vector<int> level; // elments in level level
435
+
436
+ if(root == nullptr) {
437
+ return result;
438
+ } else {
439
+ current.push(root);
440
+ }
445
441
446
- current.push(root);
447
442
while (!current.empty()) {
443
+ vector<int> level; // elments in one level
448
444
while (!current.empty()) {
449
445
TreeNode* node = current.front();
450
446
current.pop();
@@ -453,7 +449,6 @@ \subsubsection{迭代版}
453
449
if (node->right != nullptr) next.push(node->right);
454
450
}
455
451
result.push_back(level);
456
- level.clear();
457
452
swap(next, current);
458
453
}
459
454
return result;
0 commit comments