二叉树的遍历
来源:互联网 发布:世界各地社交软件 编辑:程序博客网 时间:2024/06/10 01:01
1、节点定义
public class Node{int data;Node leftChild;Node rightChild;}2、先序遍历,递归算法
void preOrder(Node node) {if(node != null) {visit(node);preOrder(node.leftChild);preOrder(node.rightChild);}}
3、中序遍历,递归算法
void inOrder(Node node) {if(node != null) {inOrder(node.leftChild);visit(node);inOrder(node.rightChild);}}
4、后续遍历,递归算法
void postOrder(Node node) {if(node != null) {postOrder(node.leftChild);postOrder(node.rightChild);visit(node);}}
5、先序遍历,非递归算法
void preOrder(Node node) {List<Node> list = new ArrayList();if(node != null) {list.add(node);while(list.length > 0) {Node p = list.get(list.length - 1);list.remove(list.length - 1);visit(p);if(p.rightChild != null) {list.add(p.rightChild);}if(p.leftChild != null) {list.add(p.leftChild);}}}}
6、中序遍历,非递归算法
void inOrder(Node node) {List<Node> list = new ArrayList();if(node != null) {Node p = node;while(list.length > 0 || p != null) {while(p != null) {list.add(p);p = p.leftChild;}if(list.length > 0) {p = list.get(list.length - 1);list.remove(list.length - 1);visit(p);p = p.rightChild;}}}}
7、后序遍历,非递归算法
void postOrder(Node node) {List<Node> list = new ArrayList();if(node != null) {Node p = node;while(list.length > 0 || p != null) {while(p != null) {list.add(p);p = p.leftChild;}if(list.length > 0) {p = list.get(list.length - 1);if(p.rightChild == null) {list.remove(length - 1);visit(p);} else {p = p.rightChild;}}}}}
阅读全文
0 0
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 性能分析4~jmap命令分析:堆信息、内存溢出
- SAP-MM-PA精解分析系列之物料(01)-概述
- FrameLayout(帧布局)
- HotPatch-EMC
- [C#] 检索数据库并用DataGridView 控件显示数据.
- 二叉树的遍历
- C#开发学习笔记:GridView设置满足条件的单元格变色
- Hibernate入门——基础详解
- 面试题:字符串倒序输出
- 【LeetCode】563. Binary Tree Tilt
- jQuery源码学习笔记(06)
- web缓存
- mybatis模糊查询
- 代理技术简介