文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
相关文章:
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
文章目录:
题目描述:
java实现方式1:
JAVA实现方式2:
python实现方式1:
python实现方式2:
github地址:
递归形式遍历:
/**
* 中序遍历二叉树
*
* @param root 根节点
* @return 链表
*/
public List inorderTraversal(TreeNode root) {
List inorderList = new ArrayList<>();
inorderHelper(inorderList, root);
return inorderList;
}
/**
* 递归帮助类
*
* @param inorderList 存储链表
* @param root 根节点
*/
public void inorderHelper(List inorderList, TreeNode root) {
if (root == null) {
return;
}
if (root.left != null) {
inorderHelper(inorderList, root.left);
}
inorderList.add(root.val);
if (root.right != null) {
inorderHelper(inorderList, root.right);
}
}
时间复杂度:O(n)
空间复杂度:O(n)
/**
* 中序遍历二叉树
*
* @param root 根节点
* @return 链表
*/
public List inorderTraversal2(TreeNode root) {
List resultList = new ArrayList<>();
Stack stack = new Stack<>();
TreeNode p = root;
while (p != null || !stack.isEmpty()) {
if (p != null) {
stack.push(p);
p = p.left;
} else {
TreeNode node = stack.pop();
resultList.add(node.val);
p = node.right;
}
}
return resultList;
}
时间复杂度:O(n)
空间复杂度:O(n)
def helper(res: List[int], root: TreeNode):
'''
中序遍历二叉树
Args:
res: 链表
root: 根节点
'''
if root.left != None:
helper(res, root.left)
res.append(root.val)
if root.right != None:
helper(res, root.right)
def inorder_traversal1(root: TreeNode) -> List[int]:
'''
中序遍历二叉树
Args:
root: 跟节点
Returns:
中序递归遍历二叉树
'''
result = []
if root == None:
return result
helper(result, root);
return result
时间复杂度:O(n)
空间复杂度:O(n)
def inorder_traversal2(root: TreeNode) -> List[int]:
'''
中序遍历二叉树
Args:
root: 跟节点
Returns:
中序递归遍历二叉树
'''
result, stack = [], []
while root or stack:
if root:
stack.append(root)
root = root.left
else:
node = stack.pop()
result.append(node.val)
root = node.right
return result
时间复杂度:O(n)
空间复杂度:O(n)
https://github.com/zhangyu345293721/leetcode