二叉树的遍历
前序遍历
中序遍历
递归
1 | public List<Integer> inorderTraversal(TreeNode root) { |
时间复杂度:O(n)
其中 n为二叉树节点的个数。二叉树的遍历中每个节点会被访问一次且只会被访问一次空间复杂度:O(n)
空间复杂度取决于递归的栈深度,而栈深度在二叉树为一条链的情况下会达到 O(n) 的级别
栈
1 | public List<Integer> inorderTraversal(TreeNode root) { |
时间复杂度:O(n)
其中 n为二叉树节点的个数。二叉树的遍历中每个节点会被访问一次且只会被访问一次空间复杂度:O(n)
空间复杂度取决于递归的栈深度,而栈深度在二叉树为一条链的情况下会达到 O(n) 的级别
Morris
1 | public List<Integer> inorderTraversal(TreeNode root) { |
- 时间复杂度:O(n),每个节点会被访问两次,总时间复杂度为O(2n)
- 空间复杂度:O(1)
颜色标记法
1 | public List<Integer> inorderTraversal(TreeNode root) { |
后序遍历
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 划水摸鱼!