二叉樹的遍歷分為以下三種:
先序遍歷:遍歷順序規則為【根左右】
中序遍歷:遍歷順序規則為【左根右】
後序遍歷:遍歷順序規則為【左右根】
二叉樹的資料結構:
/**
* 二叉樹結構
*/private static class treenode
public treenode(int value)
} /**
* 1
* / \
* 2 3
* /\ / \
* 4 5 6 7
* * @param args
*/public static void main(string args)
/*** 前序遍歷列印二叉樹 1,2,4,5,3,6,7
* @param root
*/public static void qianxuprint(treenode root)
} /**
* 中序遍歷列印二叉樹 4,2,5,1,6,3,7
* @param root
*/public static void zhongxuprint(treenode root)
} /**
* 後續遍歷列印二叉樹 4,5,2,6,7,3,1
* @param root
*/public static void houxuprint(treenode root)
} /**
* 層級遍歷列印二叉樹 1,2,3,4,5,6,7
* @param root
*/public static void floorprintbyqueue(treenode root)
if (null != node.right)
system.out.print(node.value+",");
}} }
/*** 層級遍歷列印二叉樹 1,2,3,4,5,6,7
* 遞迴實現recursion
* @param root
*/public static void floorprintbyrecursion(treenode root)
} }public static void addlevernode(map> map, int lever, treenode node)
listlist = map.get(lever);
if (list == null) else
// 左子節點
addlevernode(map, lever + 1, node.left);
// 右子節點
addlevernode(map, lever + 1, node.right);
}
面試題 分層遍歷二叉樹
程式設計之美上的題目。問題1 給定一棵二叉樹,要求按分層遍歷該二叉樹,即從上到下按層次訪問該二叉樹 每一行將單輸出一行 每一層要求訪問的順序為從左向右,並將節點依次編號。問題2 寫乙個函式,列印二叉樹中某層次的節點 從左向右 其中根結點為第1層。include iostream include qu...
前序遍歷二叉樹
題目 給定乙個二叉樹,返回它的 前序 遍歷。示例 輸入 1,null,2,3 輸出 1,2,3 方法一 遞迴 這是最容易想到且最容易實現的演算法。definition for a binary tree node.struct treenode treenode int x val x left n...
二叉樹面試題
1.求二叉樹節點個數 可以使用遞迴解決。將問題分解為求根節點 左子樹的節點數 右節點的節點數。實現 public size t size private size t size node root 2.求頁節點個數 頁節點 左右子樹都為空的節點被稱為頁節點,使用遞迴遍歷,當碰到乙個左右子樹為空的節點...