在二叉樹中,根節點位於深度 0 處,每個深度為 k 的節點的子節點位於深度 k+1 處。
如果二叉樹的兩個節點深度相同,但父節點不同,則它們是一對堂兄弟節點。
我們給出了具有唯一值的二叉樹的根節點 root,以及樹中兩個不同節點的值 x 和 y。
只有與值 x 和 y 對應的節點是堂兄弟節點時,才返回 true。否則,返回 false。
示例 1:
輸入:root = [1,2,3,4], x = 4, y = 3
輸出:false
示例 2:
輸入:root = [1,2,3,null,4,null,5], x = 5, y = 4
輸出:true
示例 3:
輸入:root = [1,2,3,null,4], x = 2, y = 3
輸出:false
/**
* definition for a binary tree node.
* public class treenode
* treenode(int val)
* treenode(int val, treenode left, treenode right)
* }*/class
solution
if(temp.left.val==y)}if
(temp.right!=null)
if(temp.right.val==y)}if
(xnode!=null&&ynode!=null)
else
if(xnode==null&&ynode==null)
else
if(size==0)
}}return
false;}
}
給定乙個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:給定二叉樹 [3,9,20,null,null,15,7],
返回它的最小深度 2.
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
if(temp.right!=null)
} count++;}
return count;
}}
給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
但是這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
思路:遞迴實現
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
boolean
balance
(treenode p,treenode q)
}
思路:非遞迴實現
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
boolean
balance
(treenode p,treenode q)
return
true;}
}
從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。
例如:給定二叉樹: [3,9,20,null,null,15,7],
返回其層次遍歷結果:
[[3],
[9,20],
[15,7]
]
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
if(temp.right!=null)
} lists.
add(list);}
return lists;
}}
演算法之廣度優先搜尋
查詢最短路徑 廣度優先搜尋可回答兩類問題 第一類問題 從節點a出發,有前往節點b的路徑嗎?第二類問題 從節點a出發,前往節點b的哪條路徑最短?資料結構 人際關係圖 實現 map graph new hashmap graph.put 我 arrays.aslist 孫 吳 李 graph.put 孫...
LeetCode中BFS(廣度優先搜尋)
如下所示,廣度優先演算法會優先遍歷每一層 a b c d e利用佇列可實現廣度優先遍歷 127.單詞接龍 給定兩個單詞 beginword 和 endword 和乙個字典,找到從 beginword 到 endword 的最短轉換序列的長度。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換過程中的...
搜尋 廣度優先搜尋
廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...