zoukankan      html  css  js  c++  java
  • 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 }
    猫猫二叉树案例代码
    时间若流水,恍惚间逝去
  • 相关阅读:
    VIJOS-P1340 拯救ice-cream(广搜+优先级队列)
    uva 11754 Code Feat
    uva11426 GCD Extreme(II)
    uvalive 4119 Always an Interger
    POJ 1442 Black Box 优先队列
    2014上海网络赛 HDU 5053 the Sum of Cube
    uvalive 4795 Paperweight
    uvalive 4589 Asteroids
    uvalive 4973 Ardenia
    DP——数字游戏
  • 原文地址:https://www.cnblogs.com/alanshreck/p/14175688.html
Copyright © 2011-2022 走看看