数据结构与算法练习-二叉树中序遍历

python数据结构与算法练习-二叉树中序遍历

二叉树中序遍历

链接: link.
给定一个二叉树的根节点 root ,返回它的 中序 遍历。

样例

输入:root = [1,null,2,3]
输出:[1,3,2]
输入:root = []
输出:[]
输入:root = [1,2]
输出:[2,1]

思路

  1. 循环
  2. 递归

python实现

循环:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
    	temp,res = [],[]
    	cur = root 
    	#注意判定条件 如果根为空或者没有temp出栈完毕则跳出
    	while temp or cur:
    		if cur:
    		#如果根有左子树 则将根与左子树都进栈,直到没有左子树
    			temp.append(cur)
    			cur = cur.left
			else:
				#当cur节点没有左子树时,需要将其出栈,因为
				cur = temp.pop()
				res.append(cur.val) 
				cur = cur.right   	
		return 	res
    	

递归:

这里递归我不知道如何存放递归过程中的结果到列表中 所以这里直接print出来了。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    
    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        if root:
            self.inorderTraversal(root.left)
            print(root.val,end='')
            self.inorderTraversal(root.right)
                      
#输入输出如下:
'''
input:
[1,null,2,3]

output:
132
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值