tree.go

package tree

import (
"fmt"
) type TreeNode struct {
ID int
Val int
Left *TreeNode
Right *TreeNode
} func PreOrder(root *TreeNode) {
if root != nil {
fmt.Printf("%d ", root.Val)
PreOrder(root.Left)
PreOrder(root.Right)
}
} func InOrder(root *TreeNode) {
if root != nil {
InOrder(root.Left)
fmt.Printf("%d ", root.Val)
InOrder(root.Right)
}
} func PostOrder(root *TreeNode) {
if root != nil {
PostOrder(root.Left)
PostOrder(root.Right)
fmt.Printf("%d ", root.Val)
}
}

main.go

package main

import (
"fmt"
"go_code/data_structure/tree"
) func main() { node7 := &tree.TreeNode{
ID: ,
Val: ,
Left: nil,
Right: nil,
}
node6 := &tree.TreeNode{
ID: ,
Val: ,
Left: nil,
Right: nil,
}
node5 := &tree.TreeNode{
ID: ,
Val: ,
Left: nil,
Right: nil,
}
node4 := &tree.TreeNode{
ID: ,
Val: ,
Left: nil,
Right: nil,
}
node3 := &tree.TreeNode{
ID: ,
Val: ,
Left: node6,
Right: node7,
}
node2 := &tree.TreeNode{
ID: ,
Val: ,
Left: node4,
Right: node5,
} node1 := &tree.TreeNode{
ID: ,
Val: ,
Left: node2,
Right: node3,
} fmt.Println("先序遍历")
tree.PreOrder(node1)
fmt.Println()
fmt.Println("中序遍历")
tree.InOrder(node1)
fmt.Println()
fmt.Println("后序遍历")
tree.PostOrder(node1)
}

运行结果:

golang数据结构之树的三种遍历方式的更多相关文章

  1. 树的三种遍历方式(C语言实现)

    //************************************************************************* // [前序]遍历算法 //二叉树不空,先访问根 ...

  2. java:数据结构(四)二叉查找树以及树的三种遍历

    @TOC 二叉树模型 二叉树是树的一种应用,一个节点可以有两个孩子:左孩子,右孩子,并且除了根节点以外每个节点都有一个父节点.当然这种简单的二叉树不能解决让树保持平衡状态,例如你一直往树的左边添加元素 ...

  3. Map三种遍历方式

    Map三种遍历方式 package decorator; import java.util.Collection; import java.util.HashMap; import java.util ...

  4. 基于Java的二叉树的三种遍历方式的递归与非递归实现

    二叉树的遍历方式包括前序遍历.中序遍历和后序遍历,其实现方式包括递归实现和非递归实现. 前序遍历:根节点 | 左子树 | 右子树 中序遍历:左子树 | 根节点 | 右子树 后序遍历:左子树 | 右子树 ...

  5. 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法

    具体见第三阶段scala-day01中的文档(scala编程基础---基础语法)  1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...

  6. Java中List集合的三种遍历方式(全网最详)

    List集合在Java日常开发中是必不可少的,只要懂得运用各种各样的方法就可以大大提高我们开发的效率,适当活用各种方法才会使我们开发事半功倍. 我总结了三种List集合的遍历方式,下面一一来介绍. 首 ...

  7. set的三种遍历方式-----不能用for循环遍历(无序)

    set的三种遍历方式,set遍历元素 list 遍历元素 http://blog.csdn.net/sunrainamazing/article/details/71577662 set遍历元素 ht ...

  8. for 、foreach 、iterator 三种遍历方式的比较

    习惯用法 for.foreach循环.iterator迭代器都是我们常用的一种遍历方式,你可以用它来遍历任何东西:包括数组.集合等 for 惯用法: List<String> list = ...

  9. Map的三种遍历方式

    对于Map的三种方式遍历 1.keySet() 2.values() 3.entrySet()三种方式得到Set之后,都可以使用 foreach或者iterator, 不能使用for,因为数据结构决定 ...

随机推荐

  1. swift冒泡排序,swift快速排序,swift归并排序,swift插入排序,swift基数排序

    import UIKit /// 冒泡 /// ///时O(n2),空O(1) 稳定排序 func Mysort(arr:[Int]) -> [Int]{ var transArr = arr ...

  2. 【Kafka】《Kafka权威指南》——提交和偏移量

    KafkaConsumer(消费者)每次调用 poll()方法,它总是返回由生产者写入 Kafka但还没有被消费者读取过的记录, 我们因 此可以追踪到哪些记录是被群组里的哪个消费者读取的.之前已经讨论 ...

  3. PHP 生成 UUID 函数

    Generate name based md5 UUID (version 3) /** * Generate name based md5 UUID (version 3). * @example ...

  4. 用iText5-2-其他类型PDF

    //设置文件属性的PDF package com.wf.zhang.test; import java.io.FileOutputStream; import com.itextpdf.text.Ba ...

  5. [CodeForces-1225A] Forgetting Things 【构造】

    [CodeForces-1225A] Forgetting Things [构造] 标签: 题解 codeforces题解 构造 题目描述 Time limit 2000 ms Memory limi ...

  6. flash的几种模式Normal Mode、DUAL Mode、Quad Mode的概念和区别

    概念 1. 标准SPI 标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, miso 2. Dual SPI 它只是针对SPI Flash而言,不是针对 ...

  7. 【转载】【PAT】PAT甲级题型分类整理

    最短路径 Emergency (25)-PAT甲级真题(Dijkstra算法) Public Bike Management (30)-PAT甲级真题(Dijkstra + DFS) Travel P ...

  8. Shape.Type属性名称及对应值列表

    在Excel工作表中,有多种Shape类型的时候,可以通过shape.Type属性值返回一个代表形状类型的MsoShapeType数值.通过该数值可知该图形的类型! 列表如下: 名称 值 说明 mso ...

  9. BOM介绍以及方法

    BOM介绍和window对象的方法 一.BOM对象 (浏览器对象模型 BOM) 1.window alert() confirm() prompt() setInterval() ​ setTimeo ...

  10. SVM算法核函数的选择

    SVM支持向量机,一般用于二分类模型,支持线性可分和非线性划分.SVM中用到的核函数有线性核'linear'.多项式核函数pkf以及高斯核函数rbf. 当训练数据线性可分时,一般用线性核函数,直接实现 ...