七叶笔记 » golang编程 » Go语言实现LeetCode算法:144 二叉树先序遍历

Go语言实现LeetCode算法:144 二叉树先序遍历

1 题目描述

给定一个 二叉树 ,返回节点值 先序遍历 数组。

注:勿使用递归,请使用循环解决。

例子:

题目出处:

2 解决思路

使用循环遍历时,按先序遍历规则,遍历根后,需先遍历其左子树,这样循环对左子树递进时,右子树暂时得不到遍历,所以需要将待遍历的右子树先记录下来,而这些右子树中,先记录的后遍历。

如下代码使用nodes slice记录待遍历的右子树,首先,将root整个认为是一个右子树放进去。

若nodes slice不为空,先取nodes slice最后一个节点,遍历其左子树,若右子树不为空,仅将右子树加入nodes slice,循环直至所有左子树遍历完成,然后进入slice的下一次循环,直至slice为空。

3 Golang实现代码

相关文章