BinaryTree 0 關於平衡二叉樹的實現

2021-06-23 01:15:05 字數 1811 閱讀 6018

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之爭了。毋庸置疑,跨平台很多很多的好處。但是,從程式...