@@ -56,14 +56,11 @@ \subsubsection{栈}
5656public:
5757 vector<int> preorderTraversal(TreeNode *root) {
5858 vector<int> result;
59- const TreeNode *p;
6059 stack<const TreeNode *> s;
61-
62- p = root;
63- if (p != nullptr) s.push(p);
60+ if (root != nullptr) s.push(root);
6461
6562 while (!s.empty()) {
66- p = s.top();
63+ const TreeNode * p = s.top();
6764 s.pop();
6865 result.push_back(p->val);
6966
@@ -84,9 +81,8 @@ \subsubsection{Morris先序遍历}
8481public:
8582 vector<int> preorderTraversal(TreeNode *root) {
8683 vector<int> result;
87- TreeNode *cur, *prev;
84+ TreeNode *cur = root , *prev = nullptr ;
8885
89- cur = root;
9086 while (cur != nullptr) {
9187 if (cur->left == nullptr) {
9288 result.push_back(cur->val);
@@ -157,8 +153,8 @@ \subsubsection{栈}
157153public:
158154 vector<int> inorderTraversal(TreeNode *root) {
159155 vector<int> result;
160- const TreeNode *p = root;
161156 stack<const TreeNode *> s;
157+ const TreeNode *p = root;
162158
163159 while (!s.empty() || p != nullptr) {
164160 if (p != nullptr) {
@@ -185,9 +181,8 @@ \subsubsection{Morris中序遍历}
185181public:
186182 vector<int> inorderTraversal(TreeNode *root) {
187183 vector<int> result;
188- TreeNode *cur, *prev;
184+ TreeNode *cur = root , *prev = nullptr ;
189185
190- cur = root;
191186 while (cur != nullptr) {
192187 if (cur->left == nullptr) {
193188 result.push_back(cur->val);
@@ -258,11 +253,9 @@ \subsubsection{栈}
258253public:
259254 vector<int> postorderTraversal(TreeNode *root) {
260255 vector<int> result;
261- /* p,正在访问的结点,q,刚刚访问过的结点*/
262- const TreeNode *p, *q;
263256 stack<const TreeNode *> s;
264-
265- p = root;
257+ /* p,正在访问的结点,q,刚刚访问过的结点*/
258+ const TreeNode * p = root, *q = nullptr ;
266259
267260 do {
268261 while (p != nullptr) { /* 往左下走*/
@@ -438,13 +431,16 @@ \subsubsection{迭代版}
438431public:
439432 vector<vector<int> > levelOrder(TreeNode *root) {
440433 vector<vector<int> > result;
441- if(root == nullptr) return result;
442-
443434 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+ }
445441
446- current.push(root);
447442 while (!current.empty()) {
443+ vector<int> level; // elments in one level
448444 while (!current.empty()) {
449445 TreeNode* node = current.front();
450446 current.pop();
@@ -453,7 +449,6 @@ \subsubsection{迭代版}
453449 if (node->right != nullptr) next.push(node->right);
454450 }
455451 result.push_back(level);
456- level.clear();
457452 swap(next, current);
458453 }
459454 return result;
0 commit comments