剑指offer(10-11)

10、二叉树的深度(JZ55)
描述及示例
在这里插入图片描述
在这里插入图片描述
思路:递归求子树高度,最后再加1即可

class Solution {
public:
    int TreeDepth(TreeNode* pRoot) {
        if(pRoot == NULL) return 0;
        return max(TreeDepth(pRoot->left),TreeDepth((pRoot->right))) + 1;
    }
};

这太简单了大家就别试了,我水个博客(狗头)
2、按之字形顺序打印二叉树
描述及示例
在这里插入图片描述
思路://

class Solution {
public:
    vector<vector<int> > Print(TreeNode* pRoot) {
        TreeNode* head = pRoot;
        //定义要返回的二维数组
        vector<vector<int>> res;
        //如果为空则直接返回空的数组
        if(NULL == head) return res;
        //对树进行遍历并使用队列结构存储元素
        queue<TreeNode*> temp;
        //头节点入队列
        temp.push(head);
        TreeNode* p;
        //定义一个标志位来看当前行要不要进行反转
        bool flag = true;
        while(!temp.empty())
        {
            //记录二叉树的某一行
            vector<int> row;
            int n = temp.size();
            //奇数行反转,偶数行不反转
            //从第一行开始,是要反转的
            flag = !flag;
            for(int i = 0;i < n;i++)
            {
                //将队列的第一个元素节点给P,在后边对P的左右孩子进行判断
                p = temp.front();
                temp.pop();
                row.push_back(p->val);
                //如果左右孩子存在则存入左孩子作为下一个层次
                if(p->left)
                    temp.push(p->left);
                if(p->right)
                    temp.push(p->right);
            }
            if(flag)
                //奇数行反转,偶数行不反转
                reverse(row.begin(),row.end());
            res.push_back(row);
        }
        return res;
    }  
};

思路清晰了你也快来试一试吧~
按之字形顺序打印二叉树

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值