题解 | #实现二叉树先序,中序和后序遍历#

实现二叉树先序,中序和后序遍历

http://www.nowcoder.com/practice/566f7f9d68c24691aa5abd8abefa798c

package main
import (
    "fmt"
    "os"
    "bufio"
    "strconv"
    "strings"
)

type TreeNode1 struct {
    left *TreeNode1
    right *TreeNode1
    val int
}
func buildTree(sc *bufio.Scanner) *TreeNode1{
    sc.Scan()
    str := sc.Text()
    strArr := strings.Split(str, " ")
    father, _ := strconv.Atoi(strArr[0])
    left, _ := strconv.Atoi(strArr[1])
    right, _ := strconv.Atoi(strArr[2])
    root := &TreeNode1{val: father}
    if left != 0 {
        root.left = buildTree(sc)
    }
    if right != 0 {
        root.right = buildTree(sc)
    }
    return root
}
func main() {
    input := bufio.NewScanner(os.Stdin)
    input.Scan()
    root := buildTree(input)
    prefix(root);
    fmt.Printf("\n");
    infix(root);
    fmt.Printf("\n");
    postfix(root);
    fmt.Printf("\n");
}

func prefix(node *TreeNode1){
    if node == nil {
        return
    }
    fmt.Printf("%d ", node.val)
    if node.left != nil {
        prefix(node.left)
    }
    if node.right != nil {
        prefix(node.right)
    }
    return
}

func infix(root *TreeNode1){
    if root == nil {
        return
    }
    if root.left != nil {
        infix(root.left)
    }
    fmt.Printf("%d ", root.val)
    if root.right != nil {
        infix(root.right)
    }
    return
}

func postfix(root *TreeNode1){
    if root == nil {
        return
    }
    if root.left != nil {
        postfix(root.left)
    }
    if root.right != nil {
        postfix(root.right)
    }
    fmt.Printf("%d ", root.val)
    return
}
全部评论

相关推荐

dachang盒子:26届秋招必须有实习经历,建议找个实习过度下,同时项目重复率也比较高没有什么难点亮点,我这里有大厂真实的项目可以提供给你学习也可以给你包装大厂实习来提高你的竞争力,感兴趣的话可以私信我或者点我主页简介
你已经投递多少份简历了
点赞 评论 收藏
分享
12-06 16:17
济宁学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务