Simple Tree Traverse(遍历)
来源:互联网 发布:通达信软件使用说明书 编辑:程序博客网 时间:2024/06/05 10:51
遍历算法
(the first node as the root node)1.先(根)序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴ 访问根结点; ⑵ 遍历左子树; ⑶ 遍历右子树。2.中(根)序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴遍历左子树; ⑵访问根结点; ⑶遍历右子树。3.后(根)序遍历得递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴遍历左子树; ⑵遍历右子树; ⑶访问根结点。
#include<iostream>using namespace std;struct Node { Node *left; Node *right; int value; explicit Node(int t) { left = right = NULL; value = t; }};inline void insert_tree(Node *root, int v);// 建树inline void print_inorder(Node *root); // 中序遍历inline void print_preorder(Node *root); // 前序遍历inline void print_postorder(Node *root); // 后序遍历inline void recycle_tree(Node *root); // 释放内存空间int main() { int n, temp; cin >> n; Node *root = NULL; cin >> temp; root = new Node(temp); n--; while (n--) { cin >> temp; insert_tree(root, temp); } cout << "Inorder:"; print_inorder(root); cout << "\nPreorder:"; print_preorder(root); cout << "\nPostorder:"; print_postorder(root); cout << endl; recycle_tree(root);}inline void insert_tree(Node *root, int v) { if (v <= root->value) { if (root->left == NULL) root->left = new Node(v); else insert_tree(root->left, v); } else { if (root->right == NULL) root->right = new Node(v); else insert_tree(root->right, v); }}inline void print_inorder(Node *root) { if (root == NULL) return; print_inorder(root->left); cout << " " << root->value; print_inorder(root->right);}inline void print_preorder(Node *root) { if (root == NULL) return; cout << " " << root->value; print_preorder(root->left); print_preorder(root->right);}inline void print_postorder(Node *root) { if (root == NULL) return; print_postorder(root->left); print_postorder(root->right); cout << " " << root->value;}inline void recycle_tree(Node *root) { if (root == NULL) return; recycle_tree(root->left); recycle_tree(root->right); delete root;}
1 0
- Simple Tree Traverse(遍历)
- Tree Traverse
- 二叉树非递归遍历算法Binary Tree Traverse methods
- Traverse Tree iteratively
- Tree -- Traverse & DFS & BFS
- Tree Traverse & BST
- Vector::traverse遍历
- List::traverse遍历
- Traverse binary tree by level
- 遍历(Traverse)HTML SELECT选项
- Graph(traverse)
- PAT程序设计考题——甲级1020( Tree traverse ) C++实现
- post Order Tree traverse - finally AC
- Inorder - Tree - traverse - recursive and not recursive
- [Leetcode] Postorder Traverse of Binary Tree
- leetcode之Binary Tree Level Order Traverse
- How to traverse a directory tree
- 072.Traverse Array 使用指针遍历数组
- 《算法》第四版《Algorithms》4th Edition 学习环境搭建
- Android开发之xml的解析
- 《Wireshark 网络分析就这么简单》学习笔记
- HYSBZ - 2152
- POJ 3237 Tree 树链剖分(路径剖分
- Simple Tree Traverse(遍历)
- 数据库命令大全
- 程序员都应该懂点心理学
- 利用组合控件实现布局文件抽取复用--自定义view属性抽取
- getlin与get的区别
- java正则匹配及替换的一点思考
- 风花雪月
- 七、二叉排序树--(1)什么是二叉排序树
- win/mac下反编译Android安装包-APK文件