go实现二叉树

一 代码

package main

import (
   "fmt"
)

type Hero struct {
   No    int
   Name  string
   Left  *Hero
   Right *Hero
}

// 前序遍历:先输 root 结点,然后再输出左子树,然后再输出右子树
func PreOrder(node *Hero) {
   if node != nil {
      fmt.Printf("no=%d name=%s\n", node.No, node.Name)
      PreOrder(node.Left)
      PreOrder(node.Right)
   }
}

// 中序遍历:先输出 root 的左子树,再输 root 结点,最后输出 root 的右子树
func InfixOrder(node *Hero) {
   if node != nil {
      InfixOrder(node.Left)
      fmt.Printf("no=%d name=%s\n", node.No, node.Name)
      InfixOrder(node.Right)
   }
}

// 后序遍历:先输出 root 的左子树,最后输出 root 的右子树,再输 root 结点
func PostOrder(node *Hero) {
   if node != nil {
      PostOrder(node.Left)
      PostOrder(node.Right)
      fmt.Printf("no=%d name=%s\n", node.No, node.Name)
   }
}

func main() {
   // 构建一个二叉树
   root := &Hero{
      No:   1,
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值