zoukankan      html  css  js  c++  java
  • 面试题之求二叉树的深度

    题目:输入一棵二叉树的根节点。求该树的深度。从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。

    struct BinaryTreeNode{
    	int m_nValue;
    	BinaryTreeNode *m_pLeft;
    	BinaryTreeNode *m_pRight;
    };
            假设一棵树仅仅有一个结点。它的深度为1。假设根结点仅仅有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;相同假设根结点仅仅有右子树而没有左子树。那么树的深度应该是其右子树的深度加1。

    假设既有右子树又有左子树。那该树的深度就是其左、右子树深度的较大值再加1。

    基于以上思路,用递归代码将很easy,详细例如以下:

    //递归求深度
    int TreeDepth(BinaryTreeNode *pRoot)
    {
    	if (pRoot==NULL)
    		return 0;
    	//左子树深度
    	int nleft=TreeDepth(pRoot->m_pLeft);
    	//右子树深度
    	int nRight=TreeDepth(pRoot->m_pRight);
    	//返回深度大的子树深度加1
    	return (nleft>nRight)?(nleft+1):(nRight+1);
    }



  • 相关阅读:
    瀑布流事件
    js 面向对象 模拟日历
    leetcode 戳气球
    leetcode 地下城游戏
    laravel服务容器
    lru缓存策略
    php实现7种常见排序
    curl请求中http头的几种格式
    wireshark过滤规则(两年前记录在qq空间的日志)
    screen和nohub及&用法
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6805493.html
Copyright © 2011-2022 走看看