資料結構之樹(其一)

2022-06-19 06:27:10 字數 1936 閱讀 8966

/**

* definition for a binary tree node.

* public class treenode

* treenode(int val)

* treenode(int val, treenode left, treenode right)

* }*/

二叉樹的前序遍歷 題目

解析

迭代用棧,因為左節點優先,所以先把右節點放入棧再放左節點,左節點出棧。

class

solution

public

void

preorder(treenode root)

}

class

solution

return

ans;

}}

統一模板(建議使用)  仿遞迴解析

class

solution

temp =st.removelast();

temp =temp.right;

}return

ans;

}}

中序遍歷 題目

解析

寫中序遍歷的時候已經忘了前序遍歷的迭代怎麼寫了。

遞迴和上面乙個模板,不寫了。迭代也是仿遞迴的統一模板,先不斷把左子節點放入棧直到空節點。然後出棧左節點,把右節點放進去。

class

solution

temp =st.removelast();

ans.add(temp.val);

temp =temp.right;

}return

ans;

}}

後序遍歷 題目 解析

先序遍歷根右左,反轉為左右根。

class

solution

collections.reverse(ans);

return

ans;

}}

統一模板(建議使用)

class

solution

temp =st.removelast();

temp =temp.left;

}collections.reverse(ans);

return

ans;

}}

層序遍歷 題目

解析

用佇列很容易解決,更多層序遍歷的題戳解析。

class

solution

ans.add(ansone);

}return

ans;

}}

遞迴,記錄深度 參考

class

solution

private

void levelorderhelp(int

deep, treenode node)

res.get(deep).add(node.val);

levelorderhelp(deep + 1, node.left);

levelorderhelp(deep + 1, node.right);

}}

翻轉二叉樹 題目

解析

其實就是在遍歷時加上一步交換子節點的操作,前序,後續,層序都可以。但是中序不行,因為中序的話是交換左子節點,再交換自己,再交換右子節點,但是這樣就是左子節點被交換了兩次。

class

solution

}

資料結構之 樹

1.雙親表示法 下標 資料 parentid 2.孩子表示法 data child1 child2 child3 3.雙親孩子表示法 下標 parentid firstchildid secondchildid 節點 下標 next 頁的話next應該是null 4.孩子兄弟表示法 data 第一次...

資料結構之樹

一 樹的基本概念 樹 tree 是元素的集合,樹有多個節點可以儲存元素 二 二叉樹 每個節點最多有兩個子節點的樹稱為二叉樹 常用來做二分查詢 binary search 等 三 b樹 即二叉搜尋樹 binary search tree 是一種特殊形態的二叉樹 1 所有節點最多擁有2個子節點 2 所有...

資料結構之樹

樹是節點的有限集合.度 a的度是3 b的度是2 d的度是2 c的度為0 當前節點的直接分支 葉子 終端節點就是葉子 e f g h c 根 非終端節點就是根 a b d 有序樹 如果e f不可以隨意換順序 就是有序樹 無序樹 如果 e f可以隨意換順序而且不影響邏輯 祖先 對e來說 b,a都是祖先 ...