#include <iostream>
using namespace std;
struct TreeNode
{
int val;
TreeNode * left;
TreeNode * right;
TreeNode(int v):val(v),left(NULL),right(NULL){}
};
void InorderTraversal(TreeNode * root)
{
if(root == NULL)
return;
TreeNode * pre = NULL;
TreeNode * current = root;
while(current != NULL)
{
if(current -> left == NULL)
{
cout << current->val << " ";
current = current->right;
continue;
}
pre = current->left;
while(pre->right != NULL && pre->right != current)
pre = pre->right;
if(pre->right == NULL)
{
pre->right = current;
current = current->left;
}
else
{
pre->right = NULL;
cout << current->val << " ";
current = current->right;
}
}
}
int main()
{
TreeNode a(0), b(1), c(2),d(3),e(4);
a.left = &b;
a.right = &c;
b.left = &d;
b.right = &e;
InorderTraversal(&a);
}
morris 树的中序遍历(O(1)空间 O(n)时间)
最新推荐文章于 2022-10-07 14:38:53 发布