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