lc94 發表於 2016-10-16 | 分類於 leetcode | 0 comments | 空間是O(1)的Morris Inorder traversal解法。 12345678910111213141516171819202122232425262728293031323334353637383940/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ // O(1) space version, Morris Inorder traversalclass Solution {public: vector<int> inorderTraversal(TreeNode* root) { TreeNode* cur = root; TreeNode* prev = NULL; vector<int> res; while(cur) { if(cur->left == nullptr) { res.push_back(cur -> val); cur = cur -> right; } else { prev = cur -> left; while(prev -> right != nullptr && prev -> right != cur) { prev = prev -> right; } if (prev -> right == nullptr) { prev -> right = cur; cur = cur -> left; } if (prev -> right == cur) { prev -> right = nullptr; res.push_back(cur -> val); cur = cur -> right; } } } return res; }};