2016 - 2024

感恩一路有你

给定一棵二叉树,通过迭代的方式前序遍历并返回节点值列表

浏览量:4148 时间:2024-07-06 11:12:53 作者:采采

1. 编写一个表示二叉树节点的静态内部类

为了构建一棵二叉树,我们首先需要定义一个静态内部类来表示二叉树的节点。该类包含一个整型变量用于存储节点的值,并拥有左右子节点的引用。

```java

static class TreeNode {

int val;

TreeNode left;

TreeNode right;

TreeNode(int val) {

val;

}

}

```

2. 通过迭代的方式实现前序遍历

为了实现通过迭代的方式前序遍历一棵二叉树,我们可以借助栈来存储待遍历的节点。具体思路如下:

1. 将当前节点的值添加到返回列表中。

2. 如果当前节点有右子节点,则将右子节点入栈。

3. 如果当前节点有左子节点,则将左子节点替换为当前节点,并继续遍历。

4. 如果当前节点既没有左子节点也没有右子节点,并且栈不为空,则弹出栈顶元素作为当前节点继续遍历。

以下是通过迭代的方式前序遍历二叉树的示例代码:

```java

public List preorderTraversal(TreeNode root) {

List result new ArrayList<>();

Stack stack new Stack<>();

if (root ! null) {

stack.push(root);

}

while (!()) {

TreeNode current stack.pop();

();

if (current.right ! null) {

stack.push(current.right);

}

if (current.left ! null) {

stack.push(current.left);

}

}

return result;

}

```

3. 通过递归的方式实现前序遍历

除了使用迭代的方式,我们也可以使用递归的方式来实现前序遍历一棵二叉树。递归的思路比较简单,即先访问当前节点的值,然后递归地遍历左子树和右子树。

以下是通过递归的方式前序遍历二叉树的示例代码:

```java

public List preorderTraversal(TreeNode root) {

List result new ArrayList<>();

preorderTraversalHelper(root, result);

return result;

}

private void preorderTraversalHelper(TreeNode node, List result) {

if (node null) {

return;

}

();

preorderTraversalHelper(node.left, result);

preorderTraversalHelper(node.right, result);

}

```

4. 编写本地测试方法

在完成算法的编写后,我们需要编写本地测试方法来验证算法的正确性。以下是一个简单的示例:

```java

public static void main(String[] args) {

Solution solution new Solution();

// 构建二叉树

TreeNode root new TreeNode(1);

root.left new TreeNode(2);

root.right new TreeNode(3);

root.left.left new TreeNode(4);

root.left.right new TreeNode(5);

// 通过迭代的方式前序遍历二叉树

List result (root);

// 输出结果

(result);

}

```

5. 运行本地测试方法

运行本地测试方法,并观察控制台输出是否符合预期。如果输出结果与预期一致,则说明本地测试通过。

6. 提交算法至平台进行测试

经过本地测试确认算法的正确性后,可以将算法提交至相应的平台进行进一步的测试。确保算法能够通过平台的测试,以保证其在实际应用中的可靠性和稳定性。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。