public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); if (root == null) return result; Stack<TreeNode> stack = new Stack<>(); stack.push(root); while (!stack.isEmpty()) { TreeNode node = stack.pop(); result.add(node.val); if (node.right != null) stack.push(node.right); if (node.left != null) stack.push(node.left); } return result; } }
时间: 2024-04-11 14:29:45 浏览: 129
二叉树的前序遍历.docx
这段代码是一个二叉树的前序遍历算法实现。它使用了栈来辅助遍历。首先,将根节点压入栈中。然后,循环执行以下操作:弹出栈顶节点,将其值加入结果列表中,然后将其右子节点(如果存在)压入栈中,最后将其左子节点(如果存在)压入栈中。直到栈为空时,遍历结束,返回结果列表。
这个算法的时间复杂度是O(n),其中n是二叉树的节点个数。因为每个节点都会被访问一次且仅被访问一次。
你还有其他问题吗?
阅读全文