Morris Traversal (O(1) space complexity)
- start from
root
node (curNode = root
) - if
curNode->left == nullptr
, then echocurNode->val
and letcurNode = curNode->right
- else if
curNode->left != nullptr
, find it'spreNode
in inorder traversal in it's left sub-tree
- a. if
preNode->right == nullptr
, then letpreNode->right = curNode
andcurNode = curNode->left
- b. else if
preNode->right == curNode
, thenpreNode->right = nullptr
(restore), echocurNode->val
and letcurNode = curNode->right
- repeat 1. and 2. until
curNode == nullptr