1. 程式人生 > >LintCode-二叉樹的最大節點

LintCode-二叉樹的最大節點

題目描述:在二叉樹中尋找值最大的節點並返回。

樣例:

給出如下一棵二叉樹:

     1
   /   \
 -5     2
 / \   /  \
0   3 -4  -5 

返回值為 3 的節點。

做題思路:建立兩個樹結點,先賦初值,把根結點賦給它們,在考慮左子樹和右子樹不為空的情況下,用遞迴函式遍歷左子樹和右子樹,賦給建立的left和right,再比較left和root的大小以找到最大的結點,賦值給root。比較right和root的大小以找到最大的結點,賦值給root,最後返回最大的結點。

關鍵程式碼:

class Solution {
public:
    /**
     * @param root the root of binary tree
     * @return the max node
     */
    TreeNode* maxNode(TreeNode* root) {
        // Write your code here
    if(root==NULL) return NULL;
        TreeNode *left=root;  
        TreeNode *right=root;  
        if (root->left!=NULL) 
        left=maxNode(root->left);  
        if (root->right!=NULL) 
        right=maxNode(root->right);  
        if (left->val>root->val)
         root->val=left->val;
        if (right->val>root->val)
         root->val=right->val;
         return root;
     }
};


做題感想:程式設計錯誤的時候,出現了兩個問題,第一個問題是在建立新的樹結點時,賦什麼值的時候換了好幾種方式,剛開始是root的值,後來又變成了int_min,後來又換回了root,後面最後判斷大小返回值的時候,不是誰大就把大的值賦給小的,而是誰大就返回誰,但就是測試資料的時候不對,後來改成這種方式就對了。

相關推薦

葉子節點距離(不含全域性變數)

題目: 輸入一顆二叉樹先序遍歷的字串,輸出該二叉樹的最大葉子節點距離 分析知,最大的距離要麼是經過根節點的一條路徑,要麼是在左子樹中的一條路徑,或者是在右子樹中的一條路徑。 那麼可以知道最大葉子節點的距離是左右子樹的高度和、左子樹最大葉節點距離、右子樹最大葉節點距

查詢節點

如題 : 在二叉樹中查詢最大值的節點並返回 測試資料 : {1,-5,3,1,2,-4,-5} 答案 : 3 思路 : 從根節點往下分別查詢左子樹和右子樹的最大節點,再比較左子樹,右子樹,根節點的大小

CODEVS 1501寬度和高度

它的 logs nbsp 二叉 ace 最小寬度 最大 -h blog 題目描述 Description 給出一個二叉樹,輸出它的最大寬度和高度。 輸入描述 Input Description 第一行一個整數n。 下面n行每行有兩個數,對於第i行的兩個數

小深度

als 最小 log root roo null mat dep tde 1.求二叉樹最大深度 public int maxDepth(TreeNode root) { if(root==null){ return 0;

18.2.14 codevs1501 寬度和高度

isp 連接 左右 ron esp color 整數 end codevs 題目描述 Description 給出一個二叉樹,輸出它的最大寬度和高度。 輸入描述 Input Description 第一行一個整數n。 下面n行每行有兩

深度和小深度

str treenode oot null 避免 結果 一個 blog clas 最大深度: int maxDepth(TreeNode *root) { if(root == NULL) return 0;

2018.3.26 1501 寬度和高度

一個空格 post 12px 一行 個數 padding pac ide urn 題目描述 給出一個二叉樹,輸出它的最大寬度和高度。 輸入描述 第一行一個整數n。下面n行每行有兩個數,對於第i行的兩個數,代表編號為i的節點所連接的兩個左右兒子的編號。如果沒有某個兒子

LeetCode之深度(簡單

問題描述: 給定一個二叉樹,找出其最大深度。 二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20

LeetCode662 寬度

給定一個二叉樹,編寫一個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹(full binary tree)結構相同,但一些節點為空。 每一層的寬度被定義為兩個端點(該層最左和最右的非空節點,兩端點間的null節點也計入長度)之間的長度。 示例 1: 輸入:

深度(遞迴實現python)---LeetCode

# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None #

leetcode662. 寬度

題目連結: https://leetcode-cn.com/problems/maximum-width-of-binary-tree/ 題目: 給定一個二叉樹,編寫一個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹(full binary tree)結構

leetcode 662寬度

一開始的思路是用bfs,但是感覺處理起來比較麻煩,後續會更新bfs的方法,這裡先貼上dfs的方法。 /**  * Definition for a binary tree node.  * struct TreeNode {  *     int val;  *     T

LeetCode124 路徑總和

Given a non-empty binary tree, find the maximum path sum. For this problem, a path is defined as any sequence of nodes from some starting node t

LeetCode 124. Binary Tree Maximum Path Sum(路徑和)

Given a binary tree, find the maximum path sum. For this problem, a path is defined as any sequence of nodes from some starting node

路徑和

給出一個二叉樹,找到其中的最大路徑和。 路徑可以從樹中任意一個節點開始和結束。 例如: 給出如下二叉樹,        1       / \     2    3 返回6。 初始思路 為了簡化分析,我們先假設二叉樹中所有節點的值都是正數。通過觀察可以

深度(Java)

題目:輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉子結點一次經過的結點形成樹的一條路徑,最長路徑的長度為樹的深度。根節點的深度為1。 解體思路: 如果根節點為空,則深度為0,返回0,遞迴的出口 如果根節點不為空,那麼深度至少為1,然後我們求他們左右子樹的深度, 比較左

阿里14筆試題-求一個值和小值的差值絕對值

阿里巴巴面試題: 輸入:一個二叉樹 輸出:二叉樹的最大值和最小值的差值絕對值 單純從演算法功能上來看 1-可以先建立一個大根堆,把最大的元素挑出來; 2-然後在建立小根堆,把最小的元素挑出來; 3-在求最大和最小差值的絕對值; 程式碼: #if 0 /* 最大堆排序 */

Leetcode 124 Binary Tree Maximum Path Sum 路徑和

原題連結 題目描述 Given a binary tree, find the maximum path sum. 給出一棵二叉樹,計算其最大路徑和。 The path may start and end at any node in the t

leetCode 104.Maximum Depth of Binary Tree(深度) 解題思路和方法

Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down t

[Swift]LeetCode662. 寬度 | Maximum Width of Binary Tree

plan sign cti 編寫 tar ctu level eve length Given a binary tree, write a function to get the maximum width of the given tree. The width of