103. Binary Tree Zigzag Level Order Traversal

题意理解

锯齿形(Z字)层次遍历二叉树

问题分析

深度遍历二叉树的应用

思路是深度遍历,在输出树的元素时,结合深度和结果的格式选择好输出时机(遍历到同一层次再输出)和结果存放位置(这里是头插,还是尾插)。

其他

链接

    vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
        vector<vector<int>> res;
        helper(root, res, 0);    //改写成递归格式(补充遍历结果和遍历深度参数)
        return res;
    }
    void helper(TreeNode* root, vector<vector<int>>& res, int depth)
    {
        if (!root)    //子树不存在
            return;    //结束递归
        if (res.size() <= depth)    //结果层次数量不够
            res.push_back({});    //增加层次结果
        if (depth % 2 == 0)    //深度是偶数
            res[depth].push_back(root->val);    //用尾插法
        else
            res[depth].insert(res[depth].begin(), root -> val);    //奇数用前插法
        helper(root -> left, res, depth + 1);    //遍历左子树
        helper(root -> right, res, depth + 1);    //遍历右子树
    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值