leetcode94.二叉树的中序遍历

1:递归代码

void midTraversal(struct TreeNode *root,int *ret,int *returnSize)
 {
     if(root)
     {

         midTraversal(root->left,ret,returnSize);//先中序访问左子树
         ret[(*returnSize)++]=root->val;//中序访问左子树之后,访问并计入数组根节点
         midTraversal(root->right,ret,returnSize);//最后中序访问右子树
     }
 }
int* inorderTraversal(struct TreeNode* root, int* returnSize){
    int *ret=(int *)malloc(sizeof(int)*100);
    *returnSize=0;
    midTraversal(root,ret,returnSize);
    return ret;
}

2:迭代思想

1:因为中序遍历是先处理左子树,然后处理中间节点,最后处理右子树。左右子树也是相同的处理方式。

2:其实迭代要做的只有两件事,:把延迟处理的先放入栈中,先处理的后放入栈中;要处理的弹出栈。

3:最后处理的是中间节点和右子树,应该先将右子树放入栈中,再将根节点放入栈中,但是右子树明显是可以用根节点表示的,如果我们只将根节点放入栈中,当根节点出栈处理的时候,将用根节点表示的右子树放入栈中,是不是也达到了先处理根节点,再处理右子树的目的。

4:我们应该最后将左子树放入栈中(注意左子树用左子树的根节点代替),现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平平无奇大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值