二叉树的前序遍历Kotlin实现
时间: 2023-05-22 21:03:36 浏览: 58
当然可以。以下是一个二叉树的前序遍历的 Kotlin 实现:
```
class Node(var value: Int, var left: Node? = null, var right: Node? = null)
fun preorderTraversal(root: Node?): List<Int> {
if (root == null) return listOf()
val result = mutableListOf<Int>()
val stack = mutableListOf<Node>()
stack.add(root)
while (stack.isNotEmpty()) {
val node = stack.removeAt(stack.size - 1)
result.add(node.value)
node.right?.let { stack.add(it) }
node.left?.let { stack.add(it) }
}
return result
}
```
这是一个迭代实现,它使用了一个栈来模拟递归,效率比递归实现高一些。
相关问题
c语言实现二叉树前序遍历
以下是C语言实现二叉树前序遍历的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建新节点
TreeNode* createNode(int val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
TreeNode* insertNode(TreeNode* root, int val) {
if (root == NULL) {
return createNode(val);
}
if (val < root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}
return root;
}
// 前序遍历
void preOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
int main() {
// 创建二叉树
TreeNode* root = createNode(5);
insertNode(root, 3);
insertNode(root, 7);
insertNode(root, 1);
insertNode(root, 9);
// 前序遍历
printf("前序遍历结果:");
preOrderTraversal(root);
printf("\n");
return 0;
}
```
运行结果:
```
前序遍历结果:5 3 1 7 9
```
二叉树 前序遍历 java
二叉树的前序遍历是一种树遍历算法,它按照根节点、左子树、右子树的顺序遍历二叉树的所有节点。下面是用Java语言实现二叉树前序遍历的代码示例:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class BinaryTree {
// 前序遍历
public static void preorderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " "); // 先输出当前节点的值
preorderTraversal(root.left); // 递归遍历左子树
preorderTraversal(root.right); // 递归遍历右子树
}
public static void main(String[] args) {
// 构造二叉树
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);
System.out.println("前序遍历结果:");
preorderTraversal(root);
}
}
```
以上代码通过构造一个简单的二叉树,并调用前序遍历方法进行遍历,输出结果为:1 2 4 5 3。