zoukankan      html  css  js  c++  java
  • 剑指offer——二叉树的深度

    题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

    C++代码:

    //递归写法
    struct treeNode {
    	int val;
    	treeNode* left;
    	treeNode* right;
    	treeNode(int x):val(x),left(NULL),right(NULL){}
    };
    class Solution {
    public:
        int TreeDepth(TreeNode* pRoot)
        {
            if(pRoot==NULL) return 0;
            return max(1+TreeDepth(pRoot->left),1+TreeDepth(pRoot->right));
        }
    };
    //非递归写法
    struct treeNode {
    	int val;
    	treeNode* left;
    	treeNode* right;
    	treeNode(int x):val(x),left(NULL),right(NULL){}
    };
    
    class Solution {
    public:
    	int TreeDepth(treeNode* pRoot) {
    		if (pRoot == NULL)return 0;
    		queue<treeNode*> q;
    		q.push(pRoot);
    		int depth = 0;
    		while (!q.empty()) {
    			int size = q.size();
    			depth++;
    			for (int i = 0; i < size; i++) {
    				treeNode* node = q.front();
    				q.pop();
    				if (node->left)q.push(node->left);
    				if (node->right)q.push(node->right);
    			}
    		}
    		return depth;
    	}
    };
    天上我才必有用,千金散尽还复来!
  • 相关阅读:
    C语言之分支语句
    C语言之运算符与表达式
    C语言之数据类型④——中文字符
    独特的对象引用:this
    理解赋值“=”的含义
    编写类的 “模板”
    类的定义
    Java语言规范
    第一周总结
    定义常量
  • 原文地址:https://www.cnblogs.com/lutaishi/p/13436284.html
Copyright © 2011-2022 走看看