当前位置:  编程技术>c/c++/嵌入式

C语言实现二叉树遍历的迭代算法

    来源: 互联网  发布时间:2014-10-28

    本文导语:  本文实例讲述了C语言实现二叉树遍历的迭代算法,是数据结构算法中非常经典的一类算法。分享给大家供大家参考。 具体实现方法如下: 二叉树中序遍历的迭代算法: #include #include using namespace std; struct Node { Node(in...

本文实例讲述了C语言实现二叉树遍历的迭代算法,是数据结构算法中非常经典的一类算法。分享给大家供大家参考。

具体实现方法如下:

二叉树中序遍历的迭代算法:

#include 
#include 

using namespace std;

struct Node { 
 Node(int i, Node* l = NULL, Node* r = NULL) : item(i), left(l), right(r) {} 
 int item; 
 Node* left; 
 Node* right; 
}; 

Node* construct() { 
 Node* node6 = new Node(16); 
 Node* node5 = new Node(12); 
 Node* node4 = new Node(8); 
 Node* node3 = new Node(4); 
 Node* node2 = new Node(14, node5, node6); 
 Node* node1 = new Node(6, node3, node4); 
 Node* node0 = new Node(10, node1, node2); 

 return node0; 
}

//递归算法
void inorder(Node *root)
{
 if (root == NULL)
 return;
 inorder(root->left);
 cout item right);
}

void preorder(Node *root)
{
 if(root == NULL)
 return;

 cout item left);
 preorder(root->right);
}

void postorder(Node *root)
{
 if (root == NULL)
 return;

 postorder(root->left);
 postorder(root->right);
 cout item left && pre != node->right)
 {
  if (node->right)
  nstack.push(node->right);
  if (node->left)
  nstack.push(node->left);
 }

 if (node->left == NULL && node->right == NULL 
  || pre == node->left || pre == node->right)
 {
  cout item right;
 }
}

void preorder3(Node *root)
{
 if (root == NULL)
 return;

 stack nstack;
 nstack.push(root);
 Node *node = NULL;

 while (!nstack.empty())
 {
 node = nstack.top();
 nstack.pop();
 cout item right)
  nstack.push(node->right);
 if (node->left)
  nstack.push(node->left);
 }
}

//迭代算法
void inorder2(Node *root)
{
 if(root == NULL)
 return;

 stack nstack;
 nstack.push(root);
 Node *next = root->left;

 while (next != NULL || !nstack.empty())
 {
 while (next != NULL)
 {
  nstack.push(next);
  next = next->left;
 }
 next = nstack.top();
 nstack.pop();

 cout item right;
 }
}

int main()
{
 Node *root = construct();
 cout 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c语言实现MD5算法完整代码示例
  • LM优化算法的C语言实现 levmar
  • MD5算法的C语言实现
  • c语言的金钱算法
  • c语言 汉诺塔算法代码
  • C语言快速幂取模算法小结
  • C语言实现的PNPoly算法代码例子
  • C语言中间语言 CIL iis7站长之家
  • c语言快速排序算法示例代码分享
  • C语言对堆排序一个算法思路和实现代码
  • c语言实现奇偶排序算法
  • c语言中使用BF-KMP算法实例
  • C语言的数字游戏算法效率问题探讨实例
  • 纯C语言:贪心Prim算法生成树问题源码分享
  • C语言kmp算法简单示例和实现原理探究
  • c语言实现单链表算法示例分享
  • 马尔可夫链算法(markov算法)的awk、C++、C语言实现代码
  • C语言位图算法详解
  • C语言实现魔方阵算法(幻方阵 奇魔方 单偶魔方实现)
  • C语言实现的排列组合问题的通用算法、解决方法
  • 最小生成树算法C语言代码实例
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3