인터뷰에서 나는 이진 트리의 가장 먼 잎 노드를 찾는 방법 과이 잎 노드에서 루트 노드까지의 거리를 찾는 방법에 의문을 제기했습니다.
첫 번째 반응은 확실히 재귀입니다
가장 먼 잎 노드를 찾아이 리프 노드에서 루트 노드까지의 거리를 어떻게 기록 할 수 있습니까? 목록을 사용하여 루트 노드에서 잎 노드까지의 경로를 유지하십시오. 이 목록의 길이는 -1이며 잎 노드에서 루트 노드까지의 거리입니다. 목록의 마지막 노드는 리프 노드입니다.
이진 트리를 디자인 할 필요가 없습니다. 특정 코드는 다른 기사를 참조하십시오.
/ *** 가장 먼 잎 노드 찾기*/ public void findFarestLeaf () {list <Node> path = new ArrayList <Node> (); List <Node> longestpath = FindLongestPath (루트, 경로); 노드 리프 = longestpath.get (longestpath.size () -1); System.out.println ( "가장 먼 잎 노드는 <" + lefle.key + "," + lefle.value + ">이며 루트 노드까지의 거리는" + (longestpath.size () -1)); } public list <Node> findLongestPath (node x, list <node> path) {if (x == null) 반환 경로; // 모든 재귀를 만들어야합니다. 그렇지 않으면 재귀 분기가 동일한 목록에서 수행됩니다. 실제로 모든 노드 가이 목록에 추가됩니다. List <Node> CurrPath = New ArrayList <Node> (); Currpath.addall (Path); currpath.add (x); List <Node> LeftPath = FindLongestPath (X.Left, CurrPath); List <Node> RightPath = FindLongestPath (X.Right, CurrPath); if (leftpath.size ()> rightpath.size ()) let 그렇지 않으면 옳은 경로를 돌려줍니다. }이진 트리의 가장 먼 잎 노드 (예시 설명)를 검색하는 위의 기사는 내가 공유하는 모든 내용입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.