数据结构《13》----二叉树 Morris 前序遍历

来源:互联网 发布:狼雨seo网站排名 编辑:程序博客网 时间:2024/06/09 23:29

三种二叉树的后序遍历的方法:

     1. 递归                      O(n) 时间复杂度, O(n) 空间复杂度

     2. 迭代(用栈)       O(n) 时间复杂度, O(n) 空间复杂度

     3. Morris 后序遍历   O(n) 时间复杂度, O(1) 空间复杂度


关于 Morris 中序遍历见 http://blog.csdn.net/shoulinjun/article/details/19051503

void PreOrderVisitMorris(TreeNode *root){  TreeNode *pre(NULL);  while(root)  {    if(root->left_child == NULL){  cout << root->value << " ";    root = root->right_child;  continue;    }//find the precessor of rootTreeNode *node = root->left_child;for(; node->right_child && node->right_child != root; node = node->right_child);//第一次访问if(node->right_child == NULL){  node->right_child = root; //建立线索  cout << root->value << " ";  root = root->left_child;}else{  node->right_child = NULL;  root = root->right_child;}  }}



2 0
原创粉丝点击