博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树遍历(层次,递归,非递归)
阅读量:2504 次
发布时间:2019-05-11

本文共 1100 字,大约阅读时间需要 3 分钟。

void LayerOrder(BTreeNode *t){      //利用队列实现层次遍历,每次访问根结点,然后一次放入左结点和右结点(如果有的话)。      if(t == NULL)return ;      queue
q; BTreeNode *temp; q.push(t); while(!q.empty()){ temp = q.front(); q.pop(); cout<
data<<' '; if(temp->lchild != NULL)q.push(temp->lchild); if(temp->rchild != NULL)q.push(temp->rchild); } }

层次遍历,需要额外O(N)的空间队列临时存储。

void morris_inorder(BiTree T) {  BNode *p, *temp;  p = T;  while(p) {    if(p->left == NULL) {      printf("%4c", p->ch);      p = p->right;    } else {      temp = p->left;      //找到左子树的最右子节点      while(temp->right != NULL && temp->right != p) {        temp = temp->right;       }      if(temp->right == NULL) {        temp->right = p;        p = p->left;      } else {        printf("%4c", p->ch);        temp->right = NULL;        p = p->right;      }    }  }}
Morris中序遍历,只需要两个临时节点空间

void inOrder_traverse_recur(BiTree T) {  if(T == NULL) {    return;  } else {    inOrder_traverse_recur(T->left);    printf("%4c", T->ch);    inOrder_traverse_recur(T->right);  }}
递归中序遍历,需要栈空间

转载地址:http://vnlgb.baihongyu.com/

你可能感兴趣的文章
Install MongoDB on FC6
查看>>
Kubernetes容器化安装
查看>>
JAVA视频MP4文件加密,Html5播放器调用
查看>>
Html5原生video标签禁止全屏播放的实现
查看>>
html5视频标签video画中画几个API
查看>>
视频标签video简易控制交互的范例
查看>>
H5视频video标签宽高自适应代码(设置视频的宽高)
查看>>
html5播放器视频倍速播放功能
查看>>
h5播放器playbackRate设置当前播放速度实现倍速播放
查看>>
谷歌浏览器扩展权限的问题:允许扩展程序读取和更改网站数据
查看>>
Code Review的一些注意事项(英文版)
查看>>
Leetcode题目索引
查看>>
基尼系数的计算原理
查看>>
理解广度优先搜索
查看>>
Android中Log信息的输出方法
查看>>
Linux内核启动及文件系统加载过程
查看>>
linux设备驱动中重要的3个数据结构 &&Linux设备驱动模型几个基本数据结构模型:kobject,kset,subsystem
查看>>
看门狗深度解析
查看>>
adb 获取Android手机信息命令
查看>>
数据集 DATASETS
查看>>