feat(tree): add tree path info to tooltip
diff --git a/src/chart/tree/TreeSeries.ts b/src/chart/tree/TreeSeries.ts
index fb59ed9..1fee9f5 100644
--- a/src/chart/tree/TreeSeries.ts
+++ b/src/chart/tree/TreeSeries.ts
@@ -38,6 +38,7 @@
 import { LayoutRect } from '../../util/layout';
 import Model from '../../model/Model';
 import { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup';
+import { wrapTreePathInfo } from '../helper/treeHelper';
 
 interface CurveLineStyleOption extends LineStyleOption{
     curveness?: number
@@ -112,6 +113,16 @@
     data?: TreeSeriesNodeItemOption[]
 }
 
+interface TreePathInfo {
+    name: string
+    dataIndex: number
+    value: number
+}
+
+interface TreeSeriesCallbackDataParams extends CallbackDataParams {
+    treePathInfo?: TreePathInfo[]
+}
+
 class TreeSeriesModel extends SeriesModel<TreeSeriesOption> {
     static readonly type = 'series.tree';
 
@@ -224,6 +235,16 @@
         });
     }
 
+    // Add tree path to tooltip param
+    getDataParams(dataIndex: number) {
+        const params = super.getDataParams.apply(this, arguments as any) as TreeSeriesCallbackDataParams;
+
+        const node = this.getData().tree.getNodeByDataIndex(dataIndex);
+        params.treePathInfo = wrapTreePathInfo(node, this);
+
+        return params;
+    }
+
     static defaultOption: TreeSeriesOption = {
         zlevel: 0,
         z: 2,
diff --git a/test/tree-basic.html b/test/tree-basic.html
index eae8c37..6ee3f67 100644
--- a/test/tree-basic.html
+++ b/test/tree-basic.html
@@ -37,10 +37,13 @@
         </style>
         <div id="main"></div>
         <script>
+            var formatUtil;
+
             require([
                 'echarts',
                 './data/flare.json'
             ], function (echarts, data) {
+                formatUtil = echarts.format;
                 var chart = echarts.init(document.getElementById('main'));
 
                 window.onresize = function () {
@@ -55,7 +58,21 @@
 
                     tooltip: {
                         trigger: 'item',
-                        triggerOn: 'mousemove'
+                        triggerOn: 'mousemove',
+                        formatter: function (info) {
+                            var value = info.value;
+                            var treePathInfo = info.treePathInfo;
+                            var treePath = [];
+
+                            for (var i = 1; i < treePathInfo.length; i++) {
+                                treePath.push(treePathInfo[i].name);
+                            }
+
+                            return [
+                                '<div>' + formatUtil.encodeHTML(treePath.join('/')) + '</div>',
+                                value ? 'value: ' + formatUtil.addCommas(value) : '',
+                            ].join('');
+                        }
                     },
 
                     series:[