美文网首页
迭代中序遍历二叉树

迭代中序遍历二叉树

作者: 克罗地亚催眠曲 | 来源:发表于2022-03-19 11:29 被阅读0次

迭代中序遍历二叉树,需要使用一个变量表示左子树是否已经被访问,还需要一个队列保存当前路径中还未访问的节点。如果当前节点的左子树不为空且还未访问,则直接将左子树添加到队列中。如果当前节点的左子树为空或者已经访问过,则可以访问当前节点以及其右子树。
代码如下

package main

import "fmt"

type TreeNode struct {
    Val      int
    Left     *TreeNode
    Right    *TreeNode
    LVisited bool
}

func TreeIter(root *TreeNode) string {
    r := ""
    if root == nil {
        return r
    }
    q := []*TreeNode{root}
    for len(q) > 0 {
        n := q[len(q)-1]
        if n.Left != nil && !n.LVisited {
            n.LVisited = true
            q = append(q, n.Left)
        } else {
            r += fmt.Sprintf("(%d)", n.Val)
            q = q[:len(q)-1]
            if n.Right != nil {
                q = append(q, n.Right)
            }
        }
    }
    return r
}

func main() {
    cs := []*TreeNode{
        {
            Val: 1,
            Left: &TreeNode{
                Val: 2,
                Left: &TreeNode{
                    Val: 4,
                },
            },
            Right: &TreeNode{
                Val: 3,
            },
        },
        {
            Val: 1,
            Left: &TreeNode{
                Val:   2,
                Right: &TreeNode{Val: 4},
            },
            Right: &TreeNode{Val: 3},
        },
    }
    for i := range cs {
        fmt.Printf("test %d: result: %s", i, TreeIter(cs[i]))
    }
}

相关文章

  • 算法-二叉树算法总结

    二叉树算法总结 1 二叉树的遍历 1.1 前序遍历 递归 迭代 1.2 中序遍历 递归 迭代 1.3 后序遍历 递...

  • 二叉树算法基础

    二叉树节点 1 前序遍历 1.1 递归遍历 1.2 迭代遍历 2 中序遍历 2.1 递归遍历 2.2迭代遍历 3 ...

  • 算法精选题总结之二叉树类

    1.二叉树的中序遍历中序遍历的迭代方法中序遍历的递归方法2.二叉树前序遍历3.二叉树后续遍历4.二叉树的最近公共祖...

  • LeetCode 二叉树的中序遍历

    二叉树的中序遍历 二叉树的中序遍历 顺序其实就是 左 中 右用递归的解法来解: 迭代解法:

  • 链表和二叉树

    单向链表 链表反转 二叉树定义 1、递归中序遍历 2、迭代中序遍历 3、二叉树层序遍历 4、判断一棵树是否为平衡树...

  • 2020-08-31二叉树遍历

    迭代方式遍历二叉树 1.前序遍历(根左右) 2.中序遍历(左根右) 3.后序遍历(左右根) 4.层序遍历

  • 二叉树的前序、中序、后序遍历迭代实现

    二叉树的前序、中序、后序遍历迭代实现 二叉树的前序遍历,迭代实现 根-左-右 思路:1、 借用栈的结构2、 先...

  • LeetCode-94. 二叉树的中序遍历

    94. 二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法...

  • LeetCode 94. 二叉树的中序遍历

    94. 二叉树的中序遍历 给定一个二叉树,返回它的 中序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算...

  • leecode刷题(29)-- 二叉树的中序遍历

    leecode刷题(29)-- 二叉树的中序遍历 二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历。 示例: ...

网友评论

      本文标题:迭代中序遍历二叉树

      本文链接:https://www.haomeiwen.com/subject/hpugdrtx.html