1.平衡二叉樹定義:
平衡二叉樹是:《一棵空樹》 || 每個節點的左右子樹高度差不大於1的非空樹》。
1.1 通過遞迴遍歷每個節點,check是否每個節點的左右子樹是否為平衡二叉樹,並且2棵子樹的高度差是否不大於1.
1.2 由於要返回2個不同型別的值,乙個boolean值用於判斷該子樹是否平衡,另乙個是該子樹的高度。return只能返回同型別的若干值,所以
處理方法如下:return 返回boolean值,另乙個返回值通過長度為1的陣列int depth = new int[1];將返回值帶回來。
class treenode
}public class balance
private static boolean recursive(treenode tnode, int depth)
int leftdepth = new int[1];
int rightdepth = new int[1];
if(recursive(tnode.left, leftdepth)
&& recursive(tnode.right, rightdepth)
&& math.abs(leftdepth[0] - rightdepth[0]) <= 1)else
return false;
} public static void main(string args)
}
1.空樹是一棵平衡樹
2.下圖二叉樹是一棵平衡樹二叉樹
驗證**:
treenode root = new treenode(0);
root.left = new treenode(1);
root.left.left = new treenode(3);
root.right = new treenode(2);
system.out.println("r:"+recur(root));
3.下圖同樣是一棵平衡二叉樹,測試**如下:
以此類推:平衡二叉樹中葉子節點可以出現在任何層(設root節點所在的層為第一層)
關於0x0d與0x0a的ASCII。
今天發現乙個有趣的現象 在 ma 我用的版本是6.11 中作彙編時發現,0x0d與0x0a有著不同的作用。比如 dead for dream 在這個字串後只加上0x0d則得到 游標移到開頭的那個d下面,而沒有換行 再輸入字元的話,將原來的字元著改掉。在這個字串上只加上0x0a則得到 游標移到末尾m字...
關於檔案中的0D 0A
檔案一般分為文字檔案和二進位制檔案。如果你想乙個文字檔案中寫入乙個 n 文字檔案中會增加0x0d 0x0a兩個位元組 可以使用utraledit來檢視,記事本是看不出來的 如果你讀乙個文字檔案,一旦遇到0x0d 0x0a,遍會讀為乙個 n 0x0a 而在windows的二進位制檔案中,你寫入什麼就是...
0 關於跨平台開發
一直以來都比較關注跨平台開發,無論是gui還是cui,想跨平台都不是一件容易的事。但是,跨平台開發都是乙個難以避免的事情。沒有人可以保證10年後大家電腦裡面使用的都是什麼作業系統,或許pc已經不再是主流的都有可能,更不用說windows和linux之爭了。毋庸置疑,跨平台很多很多的好處。但是,從程式...