二叉樹中,乙個節點可以往上往下走,那麼節點a總能走到b,求乙個二叉樹上的最遠距離。
演算法思路:
利用遞迴:
結果要麼是左子樹的最大距離,要麼是右子樹的最大距離,要麼是左子樹的最大深度到右子樹的最大深度
public static class returntype
}
public static returntype process(node head)
returntype left = process(head.left);
returntype right = process(head.right);
int p1 = left.maxdistance;
int p2 = right.maxdistance;
int p3 = left.h + 1 + right.h;
int maxdistance = math.max(p1,math.max(p2,p3));
int h = math.max(left.h,right.h)+1;
return new returntype(maxdistance,h);
}
有一顆多叉樹,每個節點的值代表活躍度,當根節點存在的時候,此節點的葉子節點的活躍度不能計算,當不存在時,此節點的活躍度可以被計算,求整個樹的最大活躍度。
演算法思路:
根節點來,那麼結果為葉子節點不來的情況;
根節點不來,那麼結果為葉子節點來或者不來的情況
public static class returntype
}
public static returntype process(node head)
}public returntype process(treenode root)
returntype left = process(root.left);
returntype right = process(root.right);
if(!left.isb||!right.isb)
if((left.h!=right.h)&&(math.abs(left.h-right.h)!=1))
return new returntype(math.max(left.h,right.h)+1,true);
}
lru
通過hashmap和雙向鍊錶實現
map中存的是key和node
雙向鍊錶中存的是node;
新元素進來,追加到尾部或者移動到尾部; addnode(),movenodetotail()
public void addnode(node node)
if(head==null)
else
}
public void movenodetotail(node node)
if(head==node)
else
tail.next = node;
node.last = tail;
node.next = null;
tail = node;
}
當map的容量滿了,則刪除頭節點,刪除map的相應節點 removehead()
public node removehead()
node res = head;
if(head==tail)
else
return res;
}
put方法:
public void put(int key, int value)
else
}}
get方法:
public int get(int key)
return -1;
}
iOS 高階 第五天 0330
cell的一些常見屬性 再如下圖 有些美工提供的是,此時就用上backgroundview和selectedbackgroundview tableview的常見屬性 特別注意 如果要設定tableview的cell的分割線左右通欄一條線的話可以用下面這樣的設定 if tableview respo...
國慶第五天
直接在寢室待了乙個上午 一 matlab 試了一下昨天安裝的matlab2010b發現檔案都打不開,報這個錯 undefined function or method uiopen for input arguments of type char 二 c 1.找到了個之前 裡的乙個問題 把本週開頭和...
集訓第五天
今天學習了乙個快速指數冪取餘的演算法。就拿一道題來說明 description 上初中的時候我們就學會了冪乘運算,可是我們卻不知道對於高階的冪乘,出結果的方法比較慢,那麼你有什麼更好的方法嗎?input 第1行,乙個整數n 1 n 1000 表示要計算的資料組數 第2 n 1行,每行兩個整數,第1個...