三个二叉树的简单问题

本文给出三个二叉树的简单问题的答案,因其简单易懂,笔者就不多说了,直接上代码。

一.找出二叉树最大值的节点

//找出二叉树最大值的节点
class Solution {
public:
    /**
     * @param root the root of binary tree
     * @return the max node
     */
    TreeNode* maxNode(TreeNode* root) {
        if (root == NULL) return root;
        TreeNode* leftMax = root;
        TreeNode* rightMax = root;
        if (root->left != NULL) leftMax = maxNode(root->left);
        if (root->right != NULL) rightMax = maxNode(root->right);
        TreeNode* max = root;
        if (leftMax->val > max->val) max = leftMax;
        if (rightMax->val > max->val) max = rightMax;
        return max;
    }
};

二.深度复制一个二叉树

//深度复制一个二叉树
/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     * @param root: The root of binary tree
     * @return root of new tree
     */
    TreeNode* cloneTree(TreeNode *root) {
        if (root == NULL) return NULL;
        TreeNode* r = new TreeNode(root->val);
        if (root->left != NULL) r->left = cloneTree(root->left);
        if (root->right != NULL) r->right = cloneTree(root->right);
        return r;
    }
};

三.找出二叉树的最大深度

二叉树的深度为根节点到最远叶子节点的距离。

//找出二叉树的最大深度
/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     * @param root: The root of binary tree.
     * @return: An integer
     */
    int maxDepth(TreeNode *root) {
        if (root == NULL) return 0;
        int left = maxDepth(root->left);
        int right = maxDepth(root->right);
        if (left >= right) return left+1;
        else return right+1;
    }
};
时间: 2024-08-09 02:15:37

三个二叉树的简单问题的相关文章

Linux内核设计第三周——构造一个简单的Linux系统

Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核源代码分析 arch/目录保存支持多种CPU类型的源代码 其中的关键目录包括:Documentation.drivers.firewall.fs(文件系统).include init目录:含有main.c,内核启动相关的代码基本都在init目录下 start_kernal()函数为启动函数,初始化内

20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS

Linux内核分析第三周  构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 进程上下文的切换 第一讲  Linux内核源代码介绍 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录.PC机一般都基于此目录. init目录包含核心的初始化代码(不是系统的引导代

第三周——构建一个简单的Linux系统MenuOS

[洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 第三周  构建一个简单的Linux系统MenuOS

二叉树的简单操作

#define _CRT_SECURE_NO_WARNINGS #define m 100 typedef char DataType; typedef struct Node /*二叉链表的结构体*/ { DataType data; struct Node * LChild; struct Node * RChild; }BiTNode, *BiTree; #define Queue_Size 100 typedef BiTree QueueElement; typedef struct /

BZOJ1864[ZJOI2006]三色二叉树[树形DP]

1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 773  Solved: 548[Submit][Status][Discuss] Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample Input 1122002010 Sample Output 5 2 HINT

20135201李辰希《Linux内核分析》第三次 构造一个简单的Linux系统OS

李辰希 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第三周构造一个简单的Linux系统MenuOS 一.Linux内核源代码简介 三个法宝和两把宝剑: 三个法宝:存储程序计算机.函数调用堆栈.终断 操作系统的两把宝剑:中断上下文的切换(保存现场和恢复现场).进程上下文的切换 2.linux内核源代码简介 arch/x86目录下的代码是重点关注的 init目录:内核启动相关的代码基本都在init目录下

07_2.二叉数,二叉树的简单应用:表达式树

""" 二叉树的list实现 """ def BinTree(data, left=None, right=None): """ 二叉树 :param data: 根结点的元素 :param left: 左子树元素 :param right: 右子树元素 :return: """ return [data, left, right] def is_empty_BinTree(btree)

k8s无脑系列(三)-NFS存储(简单版本)

k8s无脑系列(三)-NFS存储(简单版本) 1.概念 搞清楚pv,pvc pv = PersistentVolume 持久化存储控制器,面向集群而不是namespace. pvc = PersistentVolumeClaim 对接pod与pv, 关系,官方说明 A PVC to PV binding is a one-to-one mapping, using a ClaimRef which is a bi-directional binding between the Persisten

三、二叉树

一.递归思想:递归的基本思想是把规模大的问题转化为规模小的相似的子问题来解决.在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况.另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了.(http://www.nowamagic.net/librarys/veda/detail/2314) 1)遍历:结果在调用时作为参数传递:从顶到下的过程 2)分治:结果在返回值里,不在调用中作为参数传递,从下到上(有递.无归) 同:递归思