[二叉树专题]:先序遍历二叉树的递归实现与非递归实现
来源:互联网 发布:隐藏文件的软件 编辑:程序博客网 时间:2024/05/12 13:50
1、先序遍历二叉树 递归实现
思想:若二叉树为空,返回。否则
代码:
思想:若二叉树为空,返回。否则
1)遍历根节点;
2)先序遍历左子树;
3)先序遍历右子树;
代码:
template<typename elemType> void PreOrder(nodeType<elemType> *root) { if(root==NULL) return ; visit(root->data); // visit the data PreOrder(root->lchild); //递归调用,先序遍历左子树 PreOrder(root->rchild); //递归调用,先序遍历右子树 }
2、先序遍历二叉树 非递归实现
思想:二叉树的非递归先序遍历,先序遍历思想:先让根进栈,只要栈不为空,就可以做弹出操作, 每次弹出一个结点,记得把它的左右结点都进栈,记得右子树先进栈,这样可以保证右子树在栈中总处于左子树的下面。
前序遍历二叉树的非递归算法思想
建立栈 Stack;
t 指向根;
当 t 不空 或 Stack 不空时反复做:
若 t 不空,访问t,t 入 栈;t 指向左子女;
否则:出栈顶元素到 t 中;
t 指向右子女;
结束
void PreOrder_Nonrecursive(BinaryTree T) //先序遍历的非递归 { if(!T) return ; stack<BinaryTree> s; s.push(T); while(!s.empty()) { BinaryTree temp = s.top(); visit(temp->data); s.pop(); if(temp->rchild) s.push(temp->rchild); if(temp->lchild) s.push(temp->lchild); } }
- [二叉树专题]:先序遍历二叉树的递归实现与非递归实现
- 如何实现二叉树的非递归先序遍历
- 二叉树的先序遍历非递归实现方法
- 二叉树的先序遍历 很有想法的递归与非递归实现
- 二叉树的先序,中序,层次遍历,递归与非递归实现
- 二叉树(一) 先序遍历、中序遍历、后续遍历、层次遍历的递归与非递归实现
- 【二叉树遍历】先序---非递归实现
- 栈实现二叉树非递归先序遍历
- C++实现二叉树的递归遍历与非递归遍历(先序、中序、后序、层序)
- 二叉树的先序、中序、后序遍历的递归和非递归实现
- 二叉树的先序、中序、后续遍历的递归和非递归实现
- Java实现二叉树的递归与非递归遍历
- 二叉树的递归遍历与非递归算法实现
- 二叉树的递归遍历与非递归算法实现
- 递归与非递归实现二叉树的遍历
- 二叉树的递归与非递归遍历实现
- 二叉树遍历的递归与非递归实现
- 二叉树遍历的递归与非递归实现
- jQuery选择器小结
- html5 SVG 第七章 图案和渐变
- C# 代理应用
- JDBC 编程示例
- 二十款漂亮的CSS字体样式,让你受用非浅
- [二叉树专题]:先序遍历二叉树的递归实现与非递归实现
- java 聊天室之 传送图片文字等功能的实现
- POJ 3304 Segment 直线与线段相交
- jQuery中一些容易让人困惑的东西总结
- 获得当前正在显示的activity的类名
- python入门系列文章
- HDMI中的CEC
- 在tnsnames.ora中配置监听
- 去除两端margin的方法