• GoLang 数据结构-二叉树


    • 二叉树的定义
    • 二叉树是递归循环
    • 有很多树,每个树最多有两个子节点,这,被称为二叉树

    • 二叉树的遍历

    • 前序遍历
    • EachByLast前序遍历,
    • 先输出root节点,
    • 在输出左侧子树,
    • 在输出右侧子树
    •  

    • 中序遍历
    • EachByInfixOrder 中序遍历,
    • 先输出root左侧子树,
    • 在输出root节点,
    • 在输出root右侧子树
    • 后序遍历
    • EachByPostOrder 后序遍历,
    • 先输出root右侧子树,
    • 在输出root节点,
    • 在输出root左侧子树
    • 代码
     1 package main
     2 
     3 import "fmt"
     4 
     5 //Cat 猫猫结构体
     6 type Cat struct {
     7     No    int
     8     Name  string
     9     Left  *Cat
    10     Right *Cat
    11 }
    12 
    13 //EachByLast 前序遍历,先输出root节点,在输出左侧子树,在输出右侧子树
    14 func EachByLast(catNode *Cat) {
    15     if catNode != nil {
    16         fmt.Printf("%v %v
    ", catNode.No, catNode.Name)
    17         EachByLast(catNode.Left)
    18         EachByLast(catNode.Right)
    19     }
    20 }
    21 
    22 //EachByInfixOrder 中序遍历,先输出root左侧子树,在输出root节点,在输出root右侧子树
    23 func EachByInfixOrder(catNode *Cat) {
    24     if catNode != nil {
    25 
    26         EachByInfixOrder(catNode.Left)
    27         fmt.Printf("%v %v
    ", catNode.No, catNode.Name)
    28         EachByInfixOrder(catNode.Right)
    29     }
    30 }
    31 
    32 //EachByPostOrder 后序遍历,先输出root右侧子树,在输出root节点,在输出root左侧子树
    33 func EachByPostOrder(catNode *Cat) {
    34     if catNode != nil {
    35 
    36         EachByPostOrder(catNode.Right)
    37         fmt.Printf("%v %v
    ", catNode.No, catNode.Name)
    38         EachByPostOrder(catNode.Left)
    39 
    40     }
    41 }
    42 
    43 func main() {
    44     //构建一个二叉树
    45     root := &Cat{
    46         No:   1,
    47         Name: "汤姆猫",
    48     }
    49     left1 := &Cat{
    50         No:   2,
    51         Name: "小白猫",
    52     }
    53     left2 := &Cat{
    54         No:   5,
    55         Name: "大橘猫",
    56     }
    57 
    58     right1 := &Cat{
    59         No:   3,
    60         Name: "小黑猫",
    61     }
    62     right2 := &Cat{
    63         No:   4,
    64         Name: "三花猫",
    65     }
    66     right3 := &Cat{
    67         No:   6,
    68         Name: "奶牛猫",
    69     }
    70     root.Left = left1
    71     left1.Left = left2
    72     left2.Right = right3
    73     root.Right = right1
    74     right1.Right = right2
    75 
    76     EachByPostOrder(root)
    77 }
    猫猫二叉树案例代码
    时间若流水,恍惚间逝去
  • 相关阅读:
    java反射——字段
    java反射——方法
    java反射——构造方法
    代构建高可用分布式系统的利器——Netty
    JavaEE复习计划
    Java基础复习计划(三)
    Java基础复习计划(二)
    Java基础复习计划
    关于内网穿透的相关内容
    Docker化你的应用
  • 原文地址:https://www.cnblogs.com/alanshreck/p/14175688.html
Copyright © 2020-2023  润新知